Язык программирования Python

       

Множественное наследование


В отличие, например, от Java, в языке Python можно наследовать класс от нескольких классов. Такая ситуация называется множественным наследованием (multiple inheritance).

Класс, получаемый при множественном наследовании, объединяет поведение своих надклассов, комбинируя стоящие за ними абстракции.

Использовать множественное наследование следует очень осторожно, а необходимость в нем возникает реже одиночного.

  • Множественное наследование можно применить для получения класса с заданными общедоступными методами, причем методы задает один родительский класс, а реализуются они на основе методов второго класса. Первый класс может быть полностью абстрактным.
  • Множественное наследование применяется для добавления примесей (mixins). Примесь - специально сконструированный класс, добавляющий в некоторый класс какую-либо черту поведения (привнесением атрибутов). Примеси обычно являются абстрактными классами.
  • Изредка множественное наследование применяется в своем основном смысле, когда объекты класса, получающегося в результате множественного наследования, предназначаются для использования в качестве объектов всех родительских классов.

В случае с Python наследование можно считать одним из способов собрать нужные комбинации методов в серии классов:

class A: def a(self): return 'a' class B: def b(self): return 'b' class C: def c(self): return 'c'

class AB(A, B): pass class BC(B, C): pass class ABC(A, B, C): pass

Впрочем, собрать нужные методы можно и по-другому, без использования наследования:

def ma(self): return 'a' def mb(self): return 'b' def mc(self): return 'c'

class AB: a = ma b = mb

class BC: b = mb c = mc

class ABC: a = ma b = mb c = mc



Содержание раздела