是否有__getattribute__从python模块中获取类或对象?
问题描述:
我有一个这样的字符串:是否有__getattribute__从python模块中获取类或对象?
classname = "Recipe"
现在我有一个模块“contenttype.py”我想要做这样的事情:
import contenttype
myobject = contenttype.__getobject__(classname)(param=value)
是否有类似的getAttribute东西用于模块的顶层?
我知道我可以用exec()做,但我试图避免这种情况。
感谢
编辑:
我找到了一种方法,但我不认为这是件好事。
import inspect
myobject = dict(inspect.getmembers(contenttype))[classname](param=value)
答
一个模块就是一个对象,所以,是的,你可以在上面使用__getattribute__
。
但是你不想直接调用__getattribute__
,这是一个实现细节。要访问对象上的命名属性(包括模块成员),请使用getattr()
。
getattr(contenttype, classname)(param= value)
谢谢!有用。 –
确实,模块是通常的对象,但它们并没有真正的'__getattribute__'方法。 (尝试做dir(模块),你会看到。)如果你自己定义它不会工作。尽管这个内置的getattr函数按预期工作。 –