繁体   English   中英

Python中的通用类工厂

[英]Generic class factory in Python

考虑具有以下结构的类:

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

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

我会根据你的观点相信你。 我的正常答案是“为什么?????” ;)

def foo_factory(goo):
    return type('Foo', (), {
        'Meta': type('Meta', (), {"goo": goo})
        })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM