簡體   English   中英

如何設置動態創建的類的模塊名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM