我正在编写一个Python(3.6(程序,从用户提供的Yaml文件动态生成类。
使用type()
这个过程似乎非常简单,但我无法控制生成的类的模块名称。
一个最小的例子:
>>> x = type('hey.Ho', (), {})
>>> x
__main__.hey.Ho
此外(更接近我的真实世界代码(:
>>> from abc import ABCMeta
>>> class BaseClass(metaclass=ABCMeta):
... pass
>>> x = type('hey.Ho', (BaseClass,), {})
>>> x
abc.hey.Ho
如何让我的新类命名空间只是hey.Ho
?
您要设置类的__module__
属性:
>>> type('Ho', (), {'__module__': 'hey'})
<class 'hey.Ho'>