Переопределение методов в Python: что это такое и как это сделать?

Опубликовано: 2021-09-28

Python — это язык высокого уровня общего назначения, который необходимо изучить энтузиастам компьютерного программирования. Подобно другим широко используемым компьютерным языкам, таким как JAVA, C++, Golang, Ruby и т. д., Python также является объектно-ориентированным языком программирования, в котором кодирование зависит от классов и объектов. Эта концепция позволяет разработчикам структурировать простые повторно используемые коды, которые затем обозначают отдельные объекты. Есть несколько полезных функций, которые предлагают языки ООП, одна из которых — переопределение методов.

В этой статье мы поймем концепцию наследования, чтобы изучить переопределение методов в Python. Начнем с понимания того, что такое класс.

Оглавление

Что такое класс?

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

Что такое наследование? Каковы его преимущества?

Наследование в объектно-ориентированном программировании — это свойство, позволяющее наследовать свойства класса другим классам или подклассам. Это помогает предотвратить избыточность данных, лучше скомпилировать программу и ограничить количество ошибок.

Эта способность класса получать или наследовать функции от других классов известна как наследование. Класс, характеристики и свойства которого используются для создания подкласса, называется родительским классом.

Вот преимущества наследования:

  • Наследование позволяет пользователям хорошо представлять отношения в реальном времени.
  • Это позволяет повторно использовать коды. Это также позволяет программистам предоставлять больше характеристик классу.
  • Он допускает переход. Предположим, что класс Q наследует функции от класса W, тогда подклассы Q автоматически наследуются от класса W.

Виды наследства

Есть три типа наследования, которые заключаются в следующем;

1. Единственное наследование

При одиночном наследовании производный класс может наследовать функции от одного родительского класса. Это позволяет повторно использовать коды, а также добавлять новые функции.

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

Это относится к переносу характеристик более чем одного родительского класса в подкласс. Здесь функции базового класса автоматически наследуются подклассом.

3. Многоуровневое наследование

Когда свойства родительского класса и подкласса в дальнейшем наследуются другим производным классом, это называется многоуровневым наследованием.

Что такое переопределение метода в Python?

Переопределение метода — это функция объектно-ориентированных языков программирования, где подкласс или дочерний класс может предоставить программе определенные характеристики или конкретный процесс реализации данных, которые уже определены в родительском классе или суперклассе.

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

Его выполнение зависит от данных, которые используются для вызова метода, а не от эталонных данных, уже предоставленных в родительском классе. Если объект родительского класса используется для вызова метода реализации, специфичного для программы, то вызывается версия метода, записанная в родительском классе. С другой стороны, если объект подкласса используется для вызова метода, выполнение будет соответствовать функциям, упомянутым в подклассе. Если вы новичок и хотите получить опыт в науке о данных, ознакомьтесь с нашими курсами по науке о данных.

Особенности переопределения метода

В этом разделе мы рассмотрим основные функции, которые предлагает переопределение методов в Python:

  • Переопределение метода позволяет использовать в Python функции и методы с одинаковыми именами или сигнатурами.
  • Перегрузка методов является примером полиморфизма времени выполнения.
  • При переопределении методов всегда требуется использование возможности наследования.
  • Перегрузка методов осуществляется между родительскими классами и дочерними классами.
  • Он используется для изменения поведения и реализации существующих методов.
  • Всегда необходимо как минимум два класса для переопределения методов.

Понимание переопределения методов: множественное и многоуровневое наследование

Множественное и многоуровневое наследование — это два типа наследования, предлагаемые большинством объектно-ориентированных языков программирования. В этом разделе мы увидим, как переопределение методов используется в различных и многоуровневых наследованиях:

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

При таком наследовании класса или объекта подкласс наследует функции и характеристики нескольких родительских классов или баз. Например, есть три разных родительских класса — class.1, class.2, class.3, и есть class.a, который является дочерним классом, выполняющим функции множественного наследования. Класс class.a будет содержать функции, унаследованные от всех трех базовых классов.

Вот пример программы:

# Определение родительского класса 1

класс Родитель1():

# Родительский метод show

деф-шоу (я):

print("Внутри Parent1")

# Определение родительского класса 2

класс Родитель2():

# Родительский метод show

дисплей защиты (я):

print("Внутри Parent2")

# Определение дочернего класса

класс Ребенок (Родитель1, Родитель2):

# Детский метод show

деф-шоу (я):

print("Внутренний ребенок")

# Код водителя

объект = ребенок ()

obj.show()

obj.display()

Выход:

Внутри ребенка

Внутри родителя2

2. Многоуровневое наследование

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

Вот пример программы:

Родительский класс():

дисплей защиты (я):

print("Внутри родителя")

класс Ребенок (Родитель):

# Детский метод show

деф-шоу (я):

print("Внутренний ребенок")

класс GrandChild (дочерний):

# Детский метод show

деф-шоу (я):

print("Внутри GrandChild")

# Код драйвера

г = внук()

г. показать()

г. дисплей ()

Выход :

Внутри ГрандЧилд

Внутри родителя

Вызов методов базового класса в переопределенных методах

Существует метод, в котором методы родительского класса могут вызываться между переопределенными методами. Это можно сделать с помощью следующих процессов:

  • Использование имени класса

запись метода имени класса в переопределенном методе в подклассе может вызвать метод, предоставленный в родительском классе.

  • Использование функции super()

язык программирования Python предлагает функцию super(), которая используется, в частности, для обращения к родительскому классу.

Заключение

Переопределение методов — одна из наиболее важных функций языка Python. Это свойство находит широкое применение в программировании приложений для обработки данных и позволяет проводить компактный и эффективный анализ данных. Переопределение метода также упрощает компиляцию кода и повторную проверку. Есть некоторые предварительные условия для использования этой функции: понимание базовой концепции классов и наследования.

Если вы хотите подробно изучить переопределение методов в Python, мы предлагаем вам пройти 18-месячную программу магистра наук в области науки о данных . upGrad предлагает этот курс от IIIT Bangalore и Liverpool John Moore's University. Курс обучает вас таким навыкам, как статистика, прогнозная аналитика с использованием Python, машинное обучение, визуализация данных, аналитика больших данных и многое другое. Учащиеся с глубоким знанием концепций Python имеют хорошие возможности для изучения таких предметов, как глубокое обучение, обработка естественного языка, бизнес-аналитика и обработка данных.

Свяжитесь с нами сегодня, чтобы начать свое обучение!

Различие между переопределением и перегрузкой.

Основное различие между переопределением и перегрузкой заключается в том, что переопределение происходит между одними и теми же методами или сигнатурами, тогда как перегрузка происходит между одними и теми же методами класса.

1. Перегрузка метода иллюстрирует полиморфизм времени компиляции, тогда как переопределение метода иллюстрирует полиморфизм времени выполнения.
2. Перегрузка метода не может быть выполнена в Python, тогда как выполнение переопределения метода возможно при определенных условиях.

Каковы особенности переопределения метода?

Вот особенности переопределения метода:

1. Это пример полиморфизма во время выполнения.
2. Он устанавливает связь между родительским классом и дочерним классом.
3. Так как он связывает хотя бы один класс, нам нужно использовать функцию наследования.
4. Переопределение метода помогает использовать одно имя для нескольких функций.

Мы используем переопределение метода для реализации метода родительского класса в производном классе.

Какие существуют виды наследования? Можно ли переопределить частные методы в Python?

Прежде всего, переопределение методов использует многоуровневое и множественное наследование.

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

Переопределение частного метода невозможно в Java, но это возможно в Python с использованием процесса, известного как «изменение имени».