mno*_*tka 12 python module metaprogramming class
我有模块foo,在这个模块里面我动态创建了类:
def superClassCreator():
return type("Bar", (object,), {})
Run Code Online (Sandbox Code Playgroud)
现在,我想要实现的是使这个新的动态类作为这个模块的一个类可见:
import foo
dir(foo)
>>> [... 'Bar' ...]
Run Code Online (Sandbox Code Playgroud)
你知道怎么做吗?
Mar*_*ers 18
您可以使用Bar = superClassCreator()的foo(在模块级).
或者,从另一个模块,您可以添加Bar为属性foo:
import foo
foo.Bar = superClassCreator()
Run Code Online (Sandbox Code Playgroud)
或者,如果必须从生成的类中取名:
import foo
generatedClass = superClassCreator()
setattr(foo, generatedClass.__name__, generatedClass)
Run Code Online (Sandbox Code Playgroud)
在foo模块中,您可以直接在globals()以下位置设置:
generatedClass = superClassCreator()
globals()[generatedClass.__name__] = generatedClass
del generatedClass
Run Code Online (Sandbox Code Playgroud)
使用可选del语句generatedClass再次从命名空间中删除名称.
| 归档时间: |
|
| 查看次数: |
5658 次 |
| 最近记录: |