Полное руководство по перегрузке методов в Python (с примерами)

Опубликовано: 2022-04-23

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

Оглавление

Что такое перегрузка метода?

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

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

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

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

Пример переопределения метода

класс Х:

метод защиты1 (самостоятельно):

print('Я первая функция класса X')

метод защиты2 (самостоятельно):

print('Я второй признак класса X')

класс Y(X):

метод защиты1 (самостоятельно):

print('Я модифицированный первый признак класса X в классе Y')

Метод защиты3 (самостоятельно):

print('Я фича класса Y')

объект = Y()

объект.метод1()

Выход:

Я модифицированная первая функция класса X в классе Y

method1 был переопределен классом Y.

Изучите онлайн-курсы по науке о данных на upGrad

Перегрузка метода в Python

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

Проблема

Рассмотрим следующий код:

определение добавить (а, б):

с = а + б

печать(и)

определение добавить (а, б, в):

с = а + б + с

печать(и)

# add(8, 9) показывает ошибку

добавить(8, 9, 2)

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

Есть два разных способа решить эту проблему перегрузки методов в Python.

1: Использование одних и тех же методов различается в зависимости от типа данных аргументов.

Мы видим аргумент, чтобы узнать тип данных, а также *args, который позволяет передавать переменное количество аргументов методу в Python. Затем мы можем использовать операторы if для управления поведением метода в зависимости от ввода.

КОД:

определение добавить (dt, * args):

если дт == 'целое':

с = 0

если дт == 'стр':

с = ”

для x в аргументах:

с = с + х

печать(и)

добавить('целое', 11, 9)

add("str", "Привет", "Как дела?")

Выход:

20

Привет, как ты?

Это был первый обходной путь для реализации перегрузки методов в Python.

Изучите наши популярные курсы по науке о данных

Высшая программа высшего образования в области науки о данных от IIITB Программа профессиональных сертификатов в области науки о данных для принятия бизнес-решений Магистр наук в области науки о данных Университета Аризоны
Расширенная сертификационная программа в области науки о данных от IIITB Профессиональная сертификационная программа в области науки о данных и бизнес-аналитики Университета Мэриленда. Просмотреть все курсы по науке о данных

2: Использование декоратора множественной отправки (более эффективный способ)

Multiple Dispatch Decorator не является обходным решением и работает именно так, как и предполагалось. Вы можете установить его с помощью pip3.

pip3 установить несколько диспетчеров

КОД:

из нескольких отправок импортных отправок

@dispatch(int,int) # для 2 целочисленных аргументов

определение добавить (n1, n2):

с = п1 + п2

печать(и)

@dispatch(int,int,int) # для 3 целочисленных аргументов

определение добавить (n1, n2, n3):

с = п1 + п2 + п3

печать(и)

@dispatch(float,float,float) # для аргументов типа float

определение добавить (n1, n2, n3):

с = п1 + п2 + п3

печать(и)

добавить(5,2)

добавить(6,1,4)

добавить(3.4,1.2,5.6)

Выход:

7

11

10.2

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

Читайте наши популярные статьи о науке о данных

Карьерный путь в науке о данных: подробное руководство по карьере Карьерный рост в науке о данных: будущее работы уже здесь Почему наука о данных важна? 8 способов, которыми наука о данных приносит пользу бизнесу
Актуальность науки о данных для менеджеров Окончательная шпаргалка по науке о данных, которую должен иметь каждый специалист по данным 6 главных причин, почему вы должны стать специалистом по данным
Один день из жизни Data Scientist: что они делают? Развенчан миф: Data Science не нуждается в кодировании Бизнес-аналитика и наука о данных: в чем разница?

Выводы

Если вы хотите заняться наукой о данных, Python — хороший первый шаг. Чтобы углубиться и глубже изучить тему, вы можете пройти продвинутые онлайн-сертификационные курсы, такие как Executive Program in Data Science от IIIT-Bangalore в сотрудничестве с upGrad . Эта программа охватывает важные аспекты предмета и предоставляет множество дополнительных преимуществ, таких как помощь в трудоустройстве, индивидуальное наставничество, онлайн-поддержка, живые лекции и необязательные дополнительные модули для энтузиастов, которые хотят повысить свою квалификацию.

В чем разница между функцией и методом в Python?

В Python есть два вида функций: встроенные функции и пользовательские функции. print() и len() являются примерами встроенных функций. Пользовательские функции в Python — это функции, которые мы можем определить сами для выполнения конкретной задачи более одного раза в типичной программе. Метод похож на функцию, за исключением того, что методы принадлежат классу и могут быть вызваны только для объекта. (Синтаксис: obj.method())

Как выбрать между Python и R?

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

Сколько времени нужно, чтобы освоить науку о данных?

У каждого свой темп обучения. Хотя новичку без опыта программирования потребуется около 6-7 месяцев, чтобы освоить основы. Опубликуйте это, это снова зависит от того, сколько вы практикуетесь и над какими проектами работаете. Если вы пройдете онлайн-сертификацию, вы сможете освоить ее примерно за год.