У меня есть класс Person
и 2 класса Child
и Adult
, которые наследуются от `Person.
class Person:
def __init__(self, name):
self.name = name
self.age = 0
def say_hi(self):
print("Hi, I am " + self.name)
def set_age(self, age):
self.age = age
class Child(Person):
def play_with_children(self):
print("Playing with children")
class Adult(Person):
def drink_alcohol(self):
print("drinking")
Я хочу создать экземпляр из Person
затем установите его age
и в соответствии с ним этот экземпляр должен "стать" Child
или Adult
.
Также, если это Child
и его age
увеличивается, я бы хотел это "стать" Adult
. Обратите внимание, что в этом коде есть ошибка, потому что конструктор Person
ожидает name
, потому что он предназначен для создания нового экземпляра.
person1 = Person("Marvin")
person1.set_age(15)
if person1.age < 21:
person1 = Child()# This is an error => expects the name
#But I wouldn't like to handle all members like this => person1 = Child(person1.name)
#I don't want a new instance, is that even posible?
person1.say_hi()
person1.play_with_children()
person1.set_age(25)
if person1.age > 21:
person1 = Adult()# This is an error => expects the name
#But I wouldn't like to handle all members like this => person1 = Adult(person1.name)
#I don't want a new instance, is that even posible?
person1.say_hi()
person1.drink_alcohol()
PS: это всего лишь пример кода, показывающий проблему из более сложной проблемы, которую я есть (не совсем дети и взрослые: D).