假設我有乙個泛型函式f,我想以程式設計方式建立乙個行為與f相同但具有自定義簽名的函式f2。
更多細節
給定列表l和字典d,我希望能夠:將f2的非關鍵字引數設定為l中的字串
將f2的關鍵字引數設定為d中的鍵,將預設值設定為d中的值
假設我們有l=["x", "y"]
d=def f(*args, **kwargs):
#my code
然後我想要乙個有簽名的函式:def f2(x, y, opt=none):
#my code
特定用例
這只是我特定用例的簡化版本。我只是舉個例子。
我的實際用例(簡化)如下。我們有乙個通用的啟動函式:def generic_init(self,*args,**kwargs):
"""function to initiate a generic object"""
for name, arg in zip(self.__init_args__,args):
setattr(self, name, arg)
for name, default in self.__init_kw_args__.items():
if name in kwargs:
setattr(self, name, kwargs[name])
else:
setattr(self, name, default)
我們想在很多類中使用這個函式。特別是,我們希望建立乙個函式init,其行為類似於泛型初始化,但在建立時間具有由某些類變數定義的簽名:class my_class:
__init_args__=["x", "y"]
__kw_init_args__=
__init__=create_initiation_function(my_class, generic_init)
setattr(myclass, "__init__", __init__)
我們希望create_initiation_函式使用init_args和kw_init_args定義的簽名建立乙個新函式。是否可以寫入建立初始化函式?
請注意:如果我只是想改進幫助,我可以設定doc。
我們想在建立時設定函式簽名。在那之後,就不需要改變了。
我們不需要建立乙個類似generic_init的函式,而是使用乙個不同的簽名,我們可以建立乙個新的函式,使用所需的簽名,它只呼叫generic_init
我們要定義建立初始化函式。我們不想手動指定新函式!
相關的
在python中輸出 在輸出中列印Python版本
如何從指令碼中列印當前python安裝的版本號?嘗試import sys print sys.version 這將列印完整的版本資訊字串。如果您只想要python版本號,那麼bastien l onard的解決方案是最好的。您可能想檢查完整的字串,看看是否需要它或它的一部分。import platf...
python樹函式 從表示式樹建立python函式
我假設你的表示式樹是由許多物件組成的,它們的型別對應於它是什麼樣的表示式。例如,or,equals,strings等,類似於 class orexpression def init self,left,right self.left left self.right right class equal...
charles在mac上抓取本地python請求
1.首先開啟charles,在proxy中開啟macos proxy,這樣才能抓取本地請求 2.python 中,post get請求中新增verify false忽略ssl認證,否則會報caused by sslerror sslerror 1,ssl certificate verify fai...