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

时间:2018-05-23 02:11:02

标签: python-3.x getattr

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

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

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

1 个答案:

答案 0 :(得分:1)

给定文件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?,您可以在http://effbot.org/zone/python-getattr.htm找到更多信息。