Возможно ли преобразовать объект в экземпляр производного класса класса объекта инициала?
Что-то вроде:
class Base():
def __init__(self):
self.a = 1
def mutate(self):
self = Derived()
class Derived(Base):
def __init__(self):
self.b = 2
Но это не работает.
>>> obj = Base()
>>> obj.mutate()
>>> obj.a
1
>>> obj.b
AttributeError...
Если это невозможно, как мне поступить иначе?
Моя проблема заключается в следующем:
Мой базовый класс похож на «сводку», а класс Derived - это «все». Конечно, получить «целую вещь» немного дороже, поэтому работа с резюме так долго, насколько это возможно, имеет смысл иметь эти два класса. Но вы должны иметь возможность получить его, если хотите, и тогда нет смысла иметь сводку больше, поэтому каждая ссылка на сводку должна теперь быть (или содержать, по крайней мере) всю вещь. Я думаю, мне нужно создать класс, который может содержать оба, верно?
class Thing():
def __init__(self):
self.summary = Summary()
self.whole = None
def get_whole_thing(self):
self.whole = Whole()