Множественное наследование в ООП в Python
Класс в Python может наследовать сразу от
нескольких родителей. В скобках перечисляют
базы через запятую: class Child(ParentA, ParentB).
Часто вторым родителем подключают небольшой класс-примесь: обычный класс с готовыми методами, который добавляет поведение основному классу. Методы примеси у потомка выглядят своими, как если бы они были написаны в самом классе.
Синтаксис примеси такой же, как у класса. Отдельного ключевого слова нет - это просто класс, который указывают вторым (или третьим) родителем. Объект примеси сам по себе создавать не обязательно: ее подключают в объявлении потомка.
Давайте посмотрим на практическом примере.
Пусть дан класс-примесь Helper с
геттерами для name и age:
class Helper:
def get_name(self):
return self.name
def get_age(self):
return self.age
Пусть основной класс User задает
свойства в конструкторе, а геттеры
берет от примеси:
class UserBase:
def __init__(self, name, age):
self.name = name
self.age = age
class User(UserBase, Helper):
pass
После такого наследования у User
есть конструктор от UserBase и
методы get_name, get_age
от Helper. Обращаться к ним можно
на объекте User:
user = User('john', 30)
print(user.get_name()) # выведет 'john'
print(user.get_age()) # выведет 30