![](/img/trans.png)
[英]how to dynamically access a function(created by a factory) via its identifier name in module instead of its name in closure
[英]How to set the module name of a dynamically created class?
我正在使用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 / scope)中。 那怎么辦?
只需在事實之后設置__module__
屬性即可:
A.__module__ == '__main__'
您可以在exec_body
可調用對象中執行此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'>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.