我提出了这个解决方案。但这看起来太复杂了。必须有一种更好,更简单的方法。第二:有没有办法动态导入类?
class_name = "my_class_name" # located in the module : my_class_name.py
import my_class_name from my_class_name
my_class = globals()[class_name]
object = my_class()
func = getattr(my_class,"my_method")
func(object, parms) # and finally calling the method with some parms
答案 0 :(得分:1)
查看__import__
内置函数。它完全符合您的预期。
编辑:正如所承诺的,这是一个例子。不是一个非常好的,我只是有点坏消息,我的头脑在其他地方,所以你可能会写一个更智能的,更具实际应用的背景。至少,它说明了这一点。
>>> def getMethod(module, cls, method):
... return getattr(getattr(__import__(module), cls), method)
...
>>> getMethod('sys', 'stdin', 'write')
<built-in method write of file object at 0x7fcd518fa0c0>
编辑2:这是一个更聪明的人。
>>> def getMethod(path):
... names = path.split('.')
... return reduce(getattr, names[1:], __import__(names[0]))
...
>>> getMethod('sys.stdin.write')
<built-in method write of file object at 0x7fdc7e0ca0c0>
你还在吗?