簡體   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