Полиморфизм в Python с ПРИМЕРАМИ
⚡ Умное резюме
Полиморфизм в Python Это позволяет одному интерфейсу работать с объектами разных типов, так что один и тот же метод или оператор будет вести себя по-разному в зависимости от объекта. Это проявляется в перегрузке операторов, встроенных функциях, определяемых пользователем методах и наследовании. Python программ.

Что такое полиморфизм?
Полиморфизм можно определить как состояние, которое проявляется во многих различных формах. Это концепция в Python программирование, в котором объект, определенный в Python можно использовать по-разному. Он позволяет программисту определять несколько методов в производном классе и имеет то же имя, что и родительский класс. Такие сценарии поддерживают перегрузку методов в Python.
Полиморфизм в OperaTORs
Оператор в Python помогает выполнять математические и некоторые другие задачи программирования. Например, оператор '+' помогает выполнять сложение между двумя целыми типами в Python, и таким же образом, этот же оператор помогает в конкатенации строк в Python программирование.
Возьмем пример + (плюс) оператора в Python чтобы отобразить применение полиморфизма в Python как показано ниже:
Python Code:
p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))
Выход:
the sum of two numbers 132 the data type of result is <class 'int'> The sum of the two numbers 86.5 the data type of result is <class 'float'> The concatenated string is Guru99! The data type of two strings <class 'str'>
Приведенный выше пример также можно рассматривать как пример перегрузки операторов.
Полиморфизм в пользовательских методах
Пользовательский метод в Python Язык программирования — это методы, которые создает пользователь, и он объявляется с использованием ключевого слова def вместе с именем функции.
Полиморфизм в Python Язык программирования достигается за счет перегрузки и переопределения методов. Python определяет методы с ключевым словом def и с одинаковым именем как в дочернем, так и в родительском классе.
Давайте возьмем следующий пример, как показано ниже: –
Python Code:
from math
import pi
class square:
def __init__(self, length):
self.l = length
def perimeter(self):
return 4 * (self.l)
def area(self):
return self.l * self.l
class Circle:
def __init__(self, radius):
self.r = radius
def perimeter(self):
return 2 * pi * self.r
def area(self):
return pi * self.r * * 2
# Initialize the classes
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())
Выход:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
В приведенном выше коде есть два определяемых пользователем метода: периметр и площадь, определенные в классах круга и квадрата.
Как показано выше, и класс круга, и класс квадрата вызывают одно и то же имя метода, отображающее характеристику полиморфизма для получения требуемого результата.
Полиморфизм в функциях
Встроенные функции в Python разработаны и сделаны совместимыми для выполнения нескольких типов данных. В PythonФункция `len()` — одна из ключевых встроенных функций.
Она работает с несколькими типами данных: списками, кортежами, строками и словарями. Функция len() возвращает точную информацию, соответствующую этим типам данных.
На следующем рисунке показано, как полиморфизм может быть применен в Python по отношению к встроенным функциям: –
Следующая программа помогает проиллюстрировать применение полиморфизма в Python: -
Python Code:
print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))
Выход:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
В приведенном выше примере функция len() Python выполняет полиморфизм для типов данных строк, списков и словарей соответственно.
Полиморфизм и наследование
Наследование в Python можно определить как концепцию программирования, в которой определенный дочерний класс наследует свойства другого базового класса, присутствующего в Python.
Есть два ключевых Python концепции, называемые переопределением методов и перегрузкой методов.
- При перегрузке метода Python предоставляет возможность создания методов с одинаковым именем для выполнения различных функций в данном фрагменте кода. Он позволяет перегружать методы и использовать их для более простого выполнения различных задач.
- В переопределении метода Python переопределяет значение, которое имеет похожее имя в родительском и дочернем классах.
Давайте возьмем следующий пример полиморфизма и наследования, как показано ниже: –
Python Code:
class baseclass:
def __init__(self, name):
self.name = name
def area1(self):
pass
def __str__(self):
return self.name
class rectangle(baseclass):
def __init__(self, length, breadth):
super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
return self.length * self.breadth
class triangle(baseclass):
def __init__(self, height, base):
super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())
Выход:
The shape is: a triangle The area of a shape is 2464.0 The shape is: a rectangle The area of a shape is 7200
В приведенном выше коде методы имеют те же имена, что и метод init и метод area1. Объект класса Square и Прямоугольник затем используется для вызова двух методов для выполнения различных задач и предоставления вывода площади квадрата и прямоугольника.
Полиморфизм с методами класса
Python программирование позволяет программистам достигать полиморфизма и перегрузки методов методами класса. Различные классы в Python могут иметь методы, объявленные с одним и тем же именем во всем Python код.
In Python, можно определить два разных класса. Одним из них может быть дочерний класс, который наследует атрибуты от другого определенного класса, называемого родительским классом.
Следующий пример иллюстрирует концепцию полиморфизма с методами класса: –
Python Code:
class amazon:
def __init__(self, name, price):
self.name = name
self.price = price
def info(self):
print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
def __init__(self, name, price):
self.name = name
self.price = price
def info(self):
print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
product1.info()
Выход:
This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees. This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.
В приведенном выше коде два разных класса, названные Flipkart и Amazon, используют одни и те же имена методов info и init для предоставления соответствующих ценовых предложений продукта и дальнейшей иллюстрации концепции полиморфизма в Python.
Разница между перегрузкой метода и полиморфизмом времени компиляции
В полиморфизме времени компиляции компилятор Python программа разрешает вызов. Полиморфизм времени компиляции достигается посредством перегрузки методов.
Python компилятор не разрешает вызовы полиморфизма во время выполнения. Это также классифицируется как переопределение метода, когда одни и те же методы имеют схожие сигнатуры или свойства, но являются частью разных классов.


