我有一个像这样的字符串:
classname = "Recipe"
Run Code Online (Sandbox Code Playgroud)
现在我有一个模块"contenttype.py",我想做这样的事情:
import contenttype
myobject = contenttype.__getobject__(classname)(param=value)
Run Code Online (Sandbox Code Playgroud)
是否有与getattribute类似的东西用于模块的顶层?
我知道我可以用exec()来做,但我试图避免这种情况.
谢谢
编辑:
我找到了一种方法,但我不相信它是好的.
import inspect
myobject = dict(inspect.getmembers(contenttype))[classname](param=value)
Run Code Online (Sandbox Code Playgroud)
模块只是一个对象,所以是的,你可以使用__getattribute__它.
但是你不想__getattribute__直接打电话,这是一个实现细节.要访问对象(包括模块成员)的命名属性,请使用getattr().
getattr(contenttype, classname)(param= value)
Run Code Online (Sandbox Code Playgroud)