gpt4 book ai didi

python - Python 中的通用类工厂

转载 作者:太空狗 更新时间:2023-10-30 02:58:29 26 4
gpt4 key购买 nike

考虑一个具有以下结构的类:

class Foo(object):
# ...
class Meta:
goo = 1

如果我选择 Foo,我将得到 Foo.Meta.goo == 1。创建抽象类工厂 foo_factory 以便我可以调用的正确方法是什么:

>>> Clazz = foo_factory(goo=2)
>>> Clazz
<class '__main__.Foo'>
>>> Clazz.Meta.goo
2

最佳答案

你可以使用赋值:

def foo_factory(goo):
class Foo(object):
class Meta:
pass
Foo.Meta.goo = goo
return Foo

我将类创建为嵌套结构;您可以使用 type() 调用,但我发现上面的代码更具可读性。

或者您可以为闭包使用不同的名称:

def foo_factory(goo):
goo_value = goo # provide a closure with a non-conflicting name
class Foo(object):
class Meta:
goo = goo_value
return Foo

无论哪种方式,生成的类都是重新创建的(它们不会在调用之间共享)。

关于python - Python 中的通用类工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825449/

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