python設定函式 在Python中設定函式簽名

2021-10-17 02:57:18 字數 1255 閱讀 6116

假設我有乙個泛型函式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...