将类从列表解压到modu中

2024-05-23 19:06:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用type()动态地定义了几个类,并将它们放在一个列表中。但是,我想让这些类在模块中可用。例如,如果我的模块是factories.py,而我创建的动态类是PersonFactory,那么我可以调用from factories import PersonFactory

这是factories.py中代码的一部分:

factories = []

for name, obj in models:
    factory_name = name + 'Factory' # e.g. PersonFactory
    attrs = assemble_factory_attrs(obj, factory_name)
    f = type(factory_name, (object,), attrs)
    factories.append(f)

# I wanted to "release" the classes into the module definition through `*factories`
# but I get this syntax error: "SyntaxError: can use starred expression only as assignment target"
*factories

谢谢你


Tags: 模块thenamefrompyimportobj列表
1条回答
网友
1楼 · 发布于 2024-05-23 19:06:28

您可以将它们添加到模块globals()它将如下所示:

factories = []
module = globals()

for name, obj in models:
    factory_name = name + 'Factory' # e.g. PersonFactory
    attrs = assemble_factory_attrs(obj, factory_name)
    f = type(factory_name, (object,), attrs)
    module[factory_name] = f
    factories.append(f)

现在它们都在模块(全局)范围内,并且在列表factories

相关问题 更多 >