我想创建一个基于字符串关键字的字典,返回Foo的子类,稍后我可以实例化它。这是可能的还是对问题的解决方法不正确?
伪代码:
subclasses_of_foo = {"foo1": Foo1, "foo2": Foo2}
subclass_of_foo = subclasses_of_foo["foo1"]
instance = subclass_of_foo()
答案 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>