Python 3:为动态类设置命名空间



我正在编写一个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'>

最新更新