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