我有模块 foo,在这个模块中我动态创建了类:
def superClassCreator():
return type("Bar", (object,), {})
现在,我想要实现的是让这个新的动态类作为这个模块的一个类可见:
import foo
dir(foo)
>>> [... 'Bar' ...]
你知道怎么做吗?
最佳答案
您可以在 foo
中使用 Bar = superClassCreator()
(在模块级别)。
或者,您可以从另一个模块添加 Bar
作为 foo
的属性:
import foo
foo.Bar = superClassCreator()
或者,如果名称必须取自生成的类:
import foo
generatedClass = superClassCreator()
setattr(foo, generatedClass.__name__, generatedClass)
在 foo
模块中,您可以直接在 globals()
上设置它:
generatedClass = superClassCreator()
globals()[generatedClass.__name__] = generatedClass
del generatedClass
使用可选的 del
语句再次从命名空间中删除 generatedClass
名称。
关于python如何在模块中注册动态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624603/