微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:使用不同的参数遍历函数

如何解决Python:使用不同的参数遍历函数

我有一个具有三个功能的课程:

class MyClass:
    
    def f1(self,int_arg):
        return int_arg
    
    def f2(self,list_arg):
        return list_arg
    
    def f3(self,int_arg,list_arg):
        return int_arg + sum(list_arg)

这些函数的参数值是固定的:

int_arg = 1
list_arg = [1,2]

现在,我想通过以下方式遍历类的功能并执行它们:

for f in ['f1','f2','f3']:
    out = getattr(MyClass(),f)(<arguments>)

现在,处理不同功能具有不同参数的事实的明智方法是什么?

解决方法

简而言之,您想知道函数接收哪些参数。
为此,您可以使用inspect.signature

from inspect import signature

def sub_dict(d,keys):
    return dict((k,d[k]) for k in keys)

int_arg = 1
list_arg = [1,2]

params = dict(int_arg=int_arg,list_arg=list_arg)

for f in ['f1','f2','f3']:
    func = getattr(MyClass(),f)
    out = func(**sub_dict(params,signature(func).parameters))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。