python如何在模块中注册动态类

标签 python class module metaprogramming

我有模块 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/

相关文章:

python - 从范围中删除元素

python - execveat(2)/fexecve(3) 类似于 Python 子进程的行为

python - 如何确定模块名称以过滤特定的 Python 警告?

c++ - error 4430 : missing type specifier - int assumed. 注意:C++不支持default-int

python - 导入相关包进行测试

python - 输入 "help("模块时 Windows 上的 Spyder 崩溃")"

C++ Vector 实现分配新对象

c++ - C++类/结构中的函数相关属性

python - 在 python 中重新加载模块

haskell - 隐藏构造函数