Skip to main content
IT Образование

Наследование классов в Python: множественное и многоуровневое, методы с примерами

By November 25, 2022December 5th, 2023No Comments

Вы всегда можете переопределить методы родительского класса. Класс наследник наследует атрибуты своего родительского класса. Вы можете использовать эти атрибуты так, как будто они определены в классе наследнике. Он может переопределять элементы данных и методы родителя. При наследовании классов часто возникает необходимость не только добавить новые атрибуты или методы, но и расширить или изменить инициализацию объекта. В этом случае очень важно корректно вызвать конструктор суперкласса, чтобы все атрибуты и состояние, которые должны быть наследованы, были правильно установлены.
наследование классов python
Однако для других случаев super() может быть крайне полезен. Ниже приведены некоторые плюсы и минусы использования super() в случаях одиночного наследования. На основе операции наследования перепишем пример про автомобили из прошлого параграфа.

Подкласс и суперкласс в Python

Оно позволяет классам получать методы и атрибуты от уже существующих классов. Класс, от которого наследуются свойства, называется «родительским», а класс, который их наследует, называется «дочерним». Мы видим, что класс Child «унаследовал» атрибуты и методы от класса Parent. Без какой-либо https://deveducation.com/ работы с нашей стороны метод Parent.parent_method является частью класса Child. Чтобы воспользоваться методом Parent.__init__(), нам нужно было явно вызвать метод и передать self. Это потому, что, когда мы добавили метод __init__ в Child, мы перезаписали унаследованный __init__.

Когда объект присваивают новой переменной или добавляют в контейнер (список, кортеж, словарь), количество ссылок объекта увеличивается. Количество ссылок на объект уменьшается, когда он удаляется с помощью del, или его ссылка выходит ооп в python за пределы видимости. Когда количество ссылок достигает нуля, Python автоматически собирает его. Сборщик мусора Python запускается во время выполнения программы и тогда, когда количество ссылок на объект достигает нуля.

# Python. Наследование

Применять один из фундаментальных принципов программирования – принцип DRY (Don’t repeat yourself – не повторяйся!). Наследование классов — это фантастический способ создать класс на основе другого класса, следуя принципу DRY. То есть вся суть ООП в Python, как и в любом другом языке, заключается в многоразовости использования кода. Наследование позволяет создать новый класс на основе существующего класса.
наследование классов python
Super применяется при переопределении метода, когда требуется вызвать родительскую версию переопределяемого метода. В примере выше, метод __init__ в классе SavingsAccount переопределён, но с помощью super вызывается метод __init__ родительского класса. При множественном наследовании super играет более важную роль. В мире программирования на Python, наследование — это ключевое понятие объектно-ориентированного программирования.

Полиморфизм в python

Несмотря на всё сказанное, множественного наследования лучше избегать, потому, что для более сложных иерархий, вызовы могут быть намного сложнее чем в приведённых примерах. Следующим вызывается C.meth, который в свою очередь вызывает super(C, self).meth(). Здесь можно найти более исчерпывающее описание предыдущих пунктов списка, а также другие преимущества классов «нового» стиля. В нашем случае мы избежали конфликтов имен с унаследованными атрибутами, поэтому все работает как положено. На порядок начала и окончания каждого __init__ стоит обращать внимание, если вы пытаетесь установить атрибут, имя которого конфликтует с другим родительским классом. Если бы мы заменили все наши вызовы super() старомодным способом, мы получили бы 2 вызова Tokenizer.__init__.

Он так же может переопределять (override) методы родительского класса. Если подкласс не определяет свой конструктор __init__, то он наследует конструктор родительского класса по умолчанию. Классы в языке Python поддерживают наследование классов, что позволяет создавать новые классы с расширенным и/или измененным функционалом базового класса. Новый класс, созданный на основе базового класса – называется производный класс (derived class) или просто подкласс.

Создание экземпляров класса

Класс наследник берет весь функционал родительского класса, и позволяет нам добавлять новый функционал. В этой статье мы с вами разберемся на примерах, как использовать наследование классов. При расширении методов необходимо вначале вызвать метод базового класса с помощью функции super(). Если этого не сделать, то не будут созданы атрибуты базового класса в производном классе, и это приведёт к ошибке отсутствия атрибутов. Наследование позволяет при создании нового класса указать для него базовый класс. От базового класса наследуется вся его структура — атрибуты и методы.

  • В приведенном примере, мы наглядно видим, что хоть методы inputSides() и dipSides() не определены для класса Triangle(), мы смогли их использовать.
  • Наследование позволяет при создании нового класса указать для него базовый класс.
  • Многоугольник — это фигура которая имеет замкнутую форму, с 3 или более сторонами.
  • Интерпретатор при вызове метода или атрибута сначала ищет их в текущем производном классе.
  • Производные классы DerivedClassName могут переопределять методы своих базовых классов BaseClassName.

Это означает, что теперь метод __init__() определенный в классе Triangle() имеет предпочтение перед тем же методом в классе Polygon(). Если вы добавите в дочерний класс метод с тем же именем, что и у функции в родительском классе, наследование родительского метода будет переопределено. Теперь мы успешно добавили функцию __init__() и сохранили наследование родительского класса, и мы готовы добавить функциональность в функцию __init__().

Leave a Reply