通过引用实例化类

时间:2014-06-19 12:46:06

标签: python

我想创建一个基于字符串关键字的字典,返回Foo的子类,稍后我可以实例化它。这是可能的还是对问题的解决方法不正确?

伪代码:

subclasses_of_foo = {"foo1": Foo1, "foo2": Foo2}
subclass_of_foo = subclasses_of_foo["foo1"]

instance = subclass_of_foo()

2 个答案:

答案 0 :(得分:1)

当然,你可以做到。试一试。

答案 1 :(得分:1)

您的方法完全正确且有效。类就像对象,就像Python中的其他所有类一样。它们可以作为值存储在字典中。

演示:

>>> class Foo:
...     pass
... 
>>> class Bar:
...     pass
... 
>>> classmap = {'foo': Foo, 'bar': Bar}
>>> classmap['foo']
<class __main__.Foo at 0x107eee1f0>
>>> classmap['foo']()
<__main__.Foo instance at 0x107eefcb0>

请注意,duck typing完全是另一回事;它是将任何对象视为正确类型的做法,前提是它实现了您期望的属性和方法(如果它像鸭子一样行走, 是鸭子)。< / p>