Я столкнулся с проблемой изменения иерархии классов, когда я хочу добавить переменную-член в базовый класс, что требует переписывания конструкторов в производных классах.
Например, у меня есть что-то вроде этого:
class Animal:
___init___(self,animal_name):
self.name = animal_name
class Cat(Animal):
___init__(self,animal_name,animal_pattern):
self.pattern = animal_pattern
super().__init__(self,animal_name)
Теперь предположим, что я добавляю переменную-член "age" в класс Animal
:
class Animal:
___init___(self,animal_name,animal_age):
self.name = animal_name
self.age = animal_age
class Cat(Animal):
___init__(self,animal_name,animal_age,animal_pattern):
self.pattern = animal_pattern
super().__init__(animal_name,animal_age)
ThisДля изменения потребовалось добавить animal_age
в качестве параметра в конструктор Cat
.Если иерархия производных классов содержит много классов, это быстро становится утомительным и подверженным ошибкам.Есть ли способ избежать этого переписывания, как с точки зрения языковых особенностей, так и с точки зрения дизайна?