如何使用其他参数在python中启动getattr函数?

时间:2011-06-12 12:30:24

标签: python getattr

我想通过使用getattr函数添加参数来调用一些未知函数。有可能吗?

3 个答案:

答案 0 :(得分:53)

是的,但你没有将它们传递给getattr();一旦引用该函数,就可以正常调用该函数。

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

答案 1 :(得分:32)

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

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

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

答案 2 :(得分:-1)

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