python设置函数_在Python中设置函数签名
假設我有一個泛型函數f,我想以編程方式創建一個行為與f相同但具有自定義簽名的函數f2。
更多細節
給定列表l和字典d,我希望能夠:將f2的非關鍵字參數設置為l中的字符串
將f2的關鍵字參數設置為d中的鍵,將默認值設置為d中的值
假設我們有l=["x", "y"]
d={"opt":None}
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__={"my_opt": None}
__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中设置函数签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山东科技大学c语言完全题库,“山东科技大
- 下一篇: I/0口输入输出实验 将P1口的某一位