我正在使用 Python 3 创建一个动态类:
def setup(namespace):
namespace['a'] = 1
A = types.new_class('A', bases=(), kwds=None, exec_body=setup)
class B:
b = 2
print(A)
print(B)
输出:
<class 'types.A'>
<class '__main__.B'>
我想将类A
也放在__main__
模块/范围(而不是types
模块/范围)中。那怎么办呢?
只需在__module__
事后设置属性:
A.__module__ == '__main__'
您可以在exec_body
可调用文件中执行此操作:
def setup(namespace):
namespace['a'] = 1
namespace['__module__'] = '__main__'
演示:
>>> import types
>>> def setup(namespace):
... namespace['a'] = 1
...
>>> A = types.new_class('A', bases=(), kwds=None, exec_body=setup)
>>> A.__module__ = '__main__'
>>> A
<class '__main__.A'>
或exec_body()
可调用:
>>> def setup(namespace):
... namespace['a'] = 1
... namespace['__module__'] = '__main__'
...
>>> A = types.new_class('A', bases=(), kwds=None, exec_body=setup)
>>> A
<class '__main__.A'>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句