gpt4 book ai didi

python - 将列表中的类解压到模块中

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:36 24 4
gpt4 key购买 nike

我正在使用 type() 动态定义一些类,并将它们放入列表中。但是,我希望从模块中提供这些类。例如,如果我的模块是 factories.py 并且我创建的动态类是 PersonFactory,我可以调用 fromfactory 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

谢谢!

最佳答案

您可以将它们添加到模块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)

现在它们都在模块(全局)范围内,并且在列表工厂中。

关于python - 将列表中的类解压到模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com