如何在python中动态调用class.function(value) 3

How to dynamically call class.function(value) in python 3

好的,所以我有一个字符串 x = module.class.test_function(value),我想调用它并获得响应。我尝试使用 getattr(module.class, test_function)(value) 但它给出了错误:

AttributeError: module 'module' has no attribute 'test_function'

我是 python 中的新手,我该怎么做?

给定一个文件my_module.py:

def my_func(greeting):
    print(f'{greeting} from my_func!')

您可以像这样导入您的函数并正常调用它:

>>> from my_module import my_func
>>> my_func('hello')
hello from my_func!

或者,如果您想使用 getattr 动态导入函数:

>>> import my_module
>>> getattr(my_module, 'my_func')
<function my_func at 0x1086aa8c8>
>>> a_func = getattr(my_module, 'my_func')
>>> a_func('bonjour')
bonjour from my_func!

我只会在您的用例需要时才推荐这种风格,例如,要调用的方法名称直到运行时才知道,方法是动态生成的,或类似的东西。

更详细地解释 getattr 的一个很好的答案是 - Why use setattr() and getattr() built-ins? and you can find a bit more at http://effbot.org/zone/python-getattr.htm