Что такое полиморфизм в python

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

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

Это позволяет функциям или аргументам использовать сущности разных типов в разное время.

В объектно-ориентированном программировании полиморфизм позволяет использовать конкретный объект, ссылающийся на конкретный класс, таким же образом, как если бы это был другой объект, ссылающийся на совершенно другой класс.

схема полиморфизма на Python

Реализация полиморфизма в Python с помощью класса

Python может использовать разные типы классов таким же образом, используя полиморфизм. Для этой цели можно создать цикл, который выполняет итерацию по кортежу объектов. Опубликовать который, можно вызывать методы, не глядя на тип класса, к которому принадлежит объект.

Пример с классами и объектами

Эта функция определяет возраст Кролика. Эта функция определяет цвет Кролика. Эта функция определяет возраст Лошади. Эта функция определяет цвет Лошади.

Реализация с наследованием

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

Пример

Различные виды животных Возраст животного. Различные виды животных Возраст кролика. Различные виды животных Возраст лошади.

Полиморфизм времени компиляции или перегрузка метода?

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

Python не использует аргументы функции для подписи метода, поэтому перегрузка метода не поддерживается.

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

Python поддерживает перегрузку операторов. Это еще один тип полиморфизма, при котором оператор ведет себя по-разному в зависимости от типа операндов.

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

Что такое полиморфизм: слово полиморфизм означает наличие многих форм. В программировании полиморфизм означает одно и то же имя функции (но разные сигнатуры), которое используется для разных типов.

Пример встроенных полиморфных функций:

# Программа Python для демонстрации встроенной
# морфические функции

# len () используется для строки

print ( len ( «geeks» ))

# len () используется для списка

print ( len ([ 10 , 20 , 30 ]))

Примеры используемых определенных полиморфных функций:

# Простая функция Python для демонстрации
# Полиморфизм

def add(x, y, z = 0 ):

print (add( 2 , 3 , 4 ))

Полиморфизм с методами класса:
Ниже приведен код, показывающий, как python может использовать два разных типа классов одинаково. Мы создаем цикл for, который выполняет итерацию по кортежу объектов. Затем вызывайте методы, не заботясь о том, к какому типу класса относится каждый объект. Мы предполагаем, что эти методы действительно существуют в каждом классе.

def capital( self ):

print ( «New Delhi is the capital of India.» )

def language( self ):

print ( «Hindi the primary language of India.» )

print ( «India is a developing country.» )

def capital( self ):

print ( «Washington, D.C. is the capital of USA.» )

def language( self ):

print ( «English is the primary language of USA.» )

print ( «USA is a developed country.» )

for country in (obj_ind, obj_usa):

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

print ( «There are many types of birds.» )

def flight( self ):

print ( «Most of the birds can fly but some cannot.» )

def flight( self ):

print ( «Sparrows can fly.» )

def flight( self ):

print ( «Ostriches cannot fly.» )

Полиморфизм с функцией и объектами:
Также возможно создать функцию, которая может принимать любой объект с учетом полиморфизма. В этом примере давайте создадим функцию с именем «func ()», которая будет принимать объект, который мы назовем «obj». Хотя мы используем имя 'obj', любой экземпляр объекта сможет быть вызван в эту функцию. Теперь давайте дадим функции что-то, что будет использовать объект obj, который мы ей передали. В этом случае давайте вызовем три метода, а именно: capital (), language () и type (), каждый из которых определен в двух классах «Индия» и «США». Далее, давайте создадим экземпляры классов «Индия» и «США», если у нас их еще нет. С их помощью мы можем вызвать их действие с помощью той же функции func ():

Полиморфизм в Python 3

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

Статьи

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

Введение

Буквальное значение полиморфизма — это условие возникновения различных форм.

Полиморфизм — очень важное понятие в программировании. Это относится к использованию сущности одного типа (метода, оператора или объекта) для представления различных типов в различных сценариях.

Давайте рассмотрим первый пример — полиморфизм в операторе сложения.

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

Для целочисленных типов данных оператор + используется для выполнения операции арифметического сложения.

Аналогично, для строковых типов данных оператор + используется для выполнения конкатенации:

Здесь мы видим, что один и тот же оператор + использовался для выполнения различных операций для отличающихся типов данных.

Эти примеры являются одними из самых простых проявлений полиморфизма в Python.

Полиморфизм функций

В Python есть некоторые функции, которые совместимы для работы с несколькими типами данных.

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

Давайте рассмотрим несколько примеров использования этой функции:

Здесь мы видим, что многие типы данных, такие как string, list, tuple, set и dictionary, могут работать с функцией len. Однако хочу отметить, что она возвращает конкретную информацию о конкретных типах данных.

Полиморфизм классов

Полиморфизм — очень важное понятие в объектно-ориентированном программировании.

Мы можем использовать концепцию полиморфизма при создании методов классов, поскольку Python позволяет разным классам иметь методы с одинаковыми именами.

Затем мы можем обобщить вызов этих методов, игнорируя объект, с которым мы работаем.

Давайте рассмотрим пример:

Здесь мы создали два класса: Cat и Dog. Они имеют схожую структуру и одинаковые имена методов status и say.

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

Это возможно благодаря полиморфизму!

Полиморфизм и наследование

Как и в других языках программирования, дочерние классы в Python также наследуют методы и атрибуты от родительского класса. Мы можем переопределить некоторые методы и атрибуты специально для того, чтобы они соответствовали дочернему классу, который известен как «Переопределение методов» (Method Overriding).

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

Давайте рассмотрим пример:

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

Из-за полиморфизма интерпретатор Python автоматически распознает, что метод info для объекта kvadrat (класс Square) переопределен. Таким образом, он использует тот, который определен в дочернем классе.

С другой стороны, поскольку метод info для объекта krug не переопределяется, он используется из родительского класса Shape.

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

Заключение

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

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

В этой статье мы изучим полиморфизм, разные типы полиморфизма и рассмотрим на примерах как мы можем реализовать полиморфизм в Python.

Что такое полиморфизм?

В буквальном значении полиморфизм означает множество форм.

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

Давайте посмотрим на пример:

Пример 1: полиморфизм оператора сложения

Мы знаем, что оператор + часто используется в программах на Python. Но он не имеет единственного использования.

Для целочисленного типа данных оператор + используется чтобы сложить операнды.

Итак, программа выведет на экран 3 .

Подобным образом оператор + для строк используется для конкатенации.

В результате будет выведено Python Programming .

Здесь мы можем увидеть единственный оператор + выполняющий разные операции для различных типов данных. Это один из самых простых примеров полиморфизма в Python.

Полиморфизм функций

В Python есть некоторые функции, которые могут принимать аргументы разных типов.

Одна из таких функций — len() . Она может принимать различные типы данных. Давайте посмотрим на примере, как это работает.

Пример 2: полиморфизм на примере функции len()

Вывод:

Здесь мы можем увидеть, что различные типы данных, такие как строка, список, кортеж, множество и словарь могут работать с функцией len() . Однако, мы можем увидеть, что она возвращает специфичную для каждого типа данных информацию.

Полиморфизм функции len()

Полиморфизм функции len()

Полиморфизм в классах

Полиморфизм — очень важная идея в объектно-ориентированном программировании.

Чтобы узнать больше об ООП в Python, посетите эту статью: Python Object-Oriented Programming.

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

Позже мы сможем обобщить вызов этих методов, игнорируя объект, с которым мы работаем. Давайте взглянем на пример:

Пример 3: полиморфизм в методах класса

Вывод:

Здесь мы создали два класса Cat и Dog . У них похожая структура и они имеют методы с одними и теми же именами info() и make_sound() .

Однако, заметьте, что мы не создавали общего класса-родителя и не соединяли классы вместе каким-либо другим способом. Даже если мы можем упаковать два разных объекта в кортеж и итерировать по нему, мы будем использовать общую переменную animal . Это возможно благодаря полиморфизму.

Полиморфизм и наследование

Как и в других языках программирования, в Python дочерние классы могут наследовать методы и атрибуты родительского класса. Мы можем переопределить некоторые методы и атрибуты специально для того, чтобы они соответствовали дочернему классу, и это поведение нам известно как переопределение метода(method overriding).

Полиморфизм позволяет нам иметь доступ к этим переопределённым методам и атрибутам, которые имеют то же самое имя, что и в родительском классе.

Давайте рассмотрим пример:

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

Вывод:

Здесь мы можем увидеть, что такие методы как __str__() , которые не были переопределены в дочерних классах, используются из родительского класса.

Благодаря полиморфизму интерпретатор питона автоматически распознаёт, что метод fact() для объекта a (класса Square ) переопределён. И использует тот, который определён в дочернем классе.

С другой стороны, так как метод fact() для объекта b не переопределён, то используется метод с таким именем из родительского класса( Shape ).

Полиморфизм на примере дочерних и родительских классов в питоне

Полиморфизм на примере дочерних и родительских классов в питоне

Заметьте, что перегрузка методов(method overloading) — создание методов с одним и тем же именем, но с разными типами аргументов не поддерживается в питоне.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *