Полиморфизъм в Python с ПРИМЕРИ
⚡ Умно обобщение
Полиморфизъм в Python позволява на един интерфейс да работи с обекти от различни типове, така че един и същ метод или оператор се държи различно в зависимост от обекта. Това се проявява чрез претоварване на оператори, вградени функции, потребителски дефинирани методи и наследяване в Python програми.

Какво е полиморфизъм?
Полиморфизмът може да се определи като състояние, което се среща в много различни форми. Това е концепция в Python програмиране, при което обект, дефиниран в Python може да се използва по различни начини. Той позволява на програмиста да дефинира множество методи в производен клас и има същото име като присъстващото в родителския клас. Такива сценарии поддържат претоварване на метода в Python.
Полиморфизъм в Operaтори
Оператор в 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. След това обектът на клас квадрат и правоъгълник се използват за извикване на двата метода за изпълнение на различни задачи и предоставяне на изхода на площта на квадрат и правоъгълник.
Полиморфизъм с методите на класа
- 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 компилаторът не разрешава извикванията по време на изпълнение за полиморфизъм. Той също така се класифицира като заместващ метод, при който едни и същи методи носят подобни сигнатури или свойства, но те са част от различни класове.


