Как использовать Python mixin в своих программах?
Наследование и композиция: руководство по ООП в Python
by Isaac Rodriguez Jan 15, 2024 27 комментариев best-practices intermediate python
Что такое наследование и композиция?
Наследование и композиция являются двумя основными концепциями в объектно-ориентированном программировании, которые моделируют отношение между двумя классами. Они являются строительными блоками объектно-ориентированного дизайна и помогают программистам писать повторно используемый код.
По окончании этого руководства вы узнаете, как:
- Использовать наследование в Python
- Создавать иерархии классов с использованием наследования
- Использовать множественное наследование в Python и понимать его недостатки
- Использовать композицию для создания сложных объектов
- Переиспользовать существующий код с помощью композиции
- Изменять поведение приложения во время выполнения с помощью композиции
Что такое наследование?
Наследование моделирует то, что называется «является» отношением. Это означает, что когда у вас есть класс Derived
, который наследуется от класса Base
, вы создаете отношение, где Derived
является специализированной версией Base
.
Наследование представлено с использованием Unified Modeling Language или UML следующим образом:
В этом примере класс Derived
наследует свойства и методы класса Base
. Подкласс Derived
может расширять функциональность базового класса, добавляя новые свойства и методы.
Чтобы создать отношение наследования между классами, вы должны указать имя базового класса в определении подкласса с использованием ключевого слова class
:
В этом примере класс Derived
наследует функциональность класса Base
. Теперь, объекты класса Derived
имеют все свойства и методы класса Base
.
Переопределение методов
Подклассы могут также переопределять методы базового класса, чтобы изменить или дополнить их функциональность. Это позволяет адаптировать поведение базового класса в подклассе.
В этом примере класс Derived
переопределяет метод greet()
базового класса Base
. Теперь, при вызове метода greet()
на объекте класса Derived
, будет выводиться сообщение от подкласса.
Вызов методов базового класса
В подклассе можно вызвать методы базового класса, используя функцию super()
. Это полезно, когда вам необходимо выполнить метод базового класса, а затем добавить к нему дополнительную логику.
В этом примере подкласс Derived
вызывает метод greet()
базового класса Base
с помощью super()
, а затем добавляет свою собственную логику.