细节问题是我有很多类,比如 A、B、C、D...Z,它们都是从“Base”派生的。它们都有一个方法 set_value。现在我需要有一些子类来覆盖 A...Z 的 set_value,新 set_value 的实现对所有人都是一样的。从理论上讲,我可以做 AA(A) 类、BB(B) 类……但它很乏味且不紧凑,我不确定 A...Z 中的一个或全部是否需要一个子类,我只想当我创建子类的对象时创建它。
在 C++ 中,我可以通过模板轻松做到这一点:
template<class T>
class CCustom : public T
{
};
CCustom<vector<int> > obj1;
CCustom<list<char> > obj2;
在此处添加一些演示 Python 脚本以帮助解释我的问题:
class Base:
def set_value(self):
pass
class A(Base):
def set_value(self):
print('A.set_value')
class B(Base):
def set_value(self):
print('B.set_value')
class C(Base):
def set_value(self):
print('C.set_value')
def more_set_value():
print('all subclasses do this')
class AA(A):
def set_value(self):
more_set_value()
super().set_value()
class BB(B):
def set_value(self):
more_set_value()
super().set_value()
class CC(C):
def set_value(self):
more_set_value()
super().set_value()
a = AA()
b = BB()
c = CC()
a.set_value()
b.set_value()
c.set_value()
你可以看到AA,BB和CC几乎一样。当我的项目中需要放置数百个此类课程时,这很无聊。我认为必须有一种方法来编写工厂函数,动态创建 AA、BB 和 CC,以便我可以执行以下操作:
AA = create_custom_subclass(A)
a = AA()
a.set_value()