好的,所以我有一个字符串x = module.class.test_function(value)
,我想调用它并获得响应。我尝试使用getattr(module.class, test_function)(value)
,但却出错了:
AttributeError: module 'module' has no attribute 'test_function'
我是python中的新手,我该怎么做?
答案 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找到更多信息。