我有一个 python 类,作为进一步子类的基类。它包含一个应该作用于所有子类的方法,例如我想把它放在基类中。问题是,这个方法应该返回子类的一个新实例。但是我由于基类位于子类的定义之前,我不能创建子类的新实例,因为它在基类的范围内是不知道的:
class Base:
def __init__(self, value):
self.value = value
def convert_child_classes(self, newclass):
newvalue = MakeUsableInNewclass(self.value)
newattr = MakeUsableInNewclass(self.subclassattr)
return newclass(newattr, newvalue)
class Child1(Base):
def __init__(self, subclassattr, value)
super(Child, self).__init__(value)
self.subclassattr = subclassattr
def MethodForSubClassAttr(self):
...do sth with self.subclassattr...
class Child2(Base):
def __init__(self, subclassattr, value)
super(Child, self).__init__(value)
self.subclassattr = subclassattr
def SomeOtherSubClassAttrMethod(self):
...do sth that is related to this class attr...
如果我有 Child1 的实例,我希望能够对其数据做一些事情,然后在调用 convert_child_classes(Child2) 时返回具有新值的 Child2 的实例:
A = Child1('someattr', 5)
B = A.convert_child_classes(Child2)
现在 B 应该是 Child2 的一个实例,其值是从 Child1 计算出来的。但是由于 Base 类现在知道 Child1 或 Child2 是什么,它不能启动新类。