У меня есть класс 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...
I, если у меня естьэкземпляр Child1 Я хочу иметь возможность сделать некоторые вещи с его данными, а затем вернуть экземпляр Child2 с новыми значениями при вызове convert_child_classes (Child2):
A = Child1('someattr', 5)
B = A.convert_child_classes(Child2)
теперь B должен быть экземпляромChild2 со значением, которое было вычислено из Child1.Но поскольку базовый класс теперь знает, что такое Child1 или Child2, он не может инициировать новый класс.