如何在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。
好的,所以我有一个字符串 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。