Полное руководство по перегрузке методов в 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 месяцев, чтобы освоить основы. Опубликуйте это, это снова зависит от того, сколько вы практикуетесь и над какими проектами работаете. Если вы пройдете онлайн-сертификацию, вы сможете освоить ее примерно за год.