[英]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.