Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用附加参数启动getattr函数?_Python_Getattr - Fatal编程技术网

如何在python中使用附加参数启动getattr函数?

如何在python中使用附加参数启动getattr函数?,python,getattr,Python,Getattr,我想调用一些未知函数,并使用getattr函数添加参数。可能吗?是的,但您不能将它们传递给getattr();一旦有了对函数的引用,就可以正常调用该函数 getattr(obj, 'func')('foo', 'bar', 42) 如果希望使用参数/关键字参数的动态列表调用动态方法,可以执行以下操作: function_name = 'wibble' args = ['flip', 'do'] kwargs = {'foo':'bar'} getattr(obj, function_name

我想调用一些未知函数,并使用getattr函数添加参数。可能吗?

是的,但您不能将它们传递给
getattr()
;一旦有了对函数的引用,就可以正常调用该函数

getattr(obj, 'func')('foo', 'bar', 42)

如果希望使用参数/关键字参数的动态列表调用动态方法,可以执行以下操作:

function_name = 'wibble'
args = ['flip', 'do']
kwargs = {'foo':'bar'}

getattr(obj, function_name)(*args, **kwargs)

感谢您的额外kwargs方法。
import sys


# function to call
def wibble(a, b, foo='foo'):
    print(a, b, foo)


# have to be in the same scope as wibble
def call_function_by_name(function_name, args=[], kwargs={}):
    getattr(sys.modules[__name__], function_name)(*args, **kwargs)

    
call_function_by_name('wibble', args=['arg1', 'arg2'], kwargs={'foo': 'bar'})
# output:
# arg1 arg2 bar