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

我们要定义创建初始化函数。我们不想手动指定新函数!

相关的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值