我正在尝试实现一个工厂函数,该函数创建给定基类的子类(现在与其名称的字符串相比)。我有这个
class Base(object):
...
在另一个文件中我有
class Sub(Base):
...
我将这些类分成文件,因为我将有许多子类,并且我不想将它们全部定义在一个大文件中(如果可能的话,我会满足于前向声明)。
现在在“基础”文件中,我想实现一个函数来用给定的名称创建一个实例,但是Base.__subclasses__()
没有,所以我不能做这样的事情:
def factory(name):
for Subclass in Base.__subclasses__()
if name is ...
return Subclass()
我的问题是实现这种模式的最佳方法是什么。将来我想将其更改为可能使用哈希表,但我无法让这个简单的“基于字符串”的示例正常工作。