Полиморфизъм в Python с ПРИМЕРИ
Какво е полиморфизъм?
Полиморфизмът може да се определи като състояние, което се среща в много различни форми. Това е концепция в Python програмиране, при което обект, дефиниран в Python може да се използва по различни начини. Той позволява на програмиста да дефинира множество методи в производен клас и има същото име като присъстващото в родителския клас. Такива сценарии поддържат претоварване на метода в Python.
Полиморфизъм в Operaтори
Оператор в Python помага при изпълнението на математически и няколко други програмни задачи. Например операторът „+“ помага при събиране между два типа цели числа Pythonи по същия начин същият оператор помага при конкатенирането на низове Python програмиране.
Нека вземем пример за + (плюс) оператор в Python за показване на приложение на полиморфизъм в Python както е показано по-долу:
Python Код:
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 Код:
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 Код:
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 Код:
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 Код:
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 компилаторът не разрешава извикванията по време на изпълнение за полиморфизъм. Той също така се класифицира като заместващ метод, при който едни и същи методи носят подобни сигнатури или свойства, но те са част от различни класове.
Oбобщение
- Полиморфизмът може да се определи като състояние, което се среща в много различни форми.
- Оператор в Python помага при изпълнението на математически и няколко други програмни задачи.
- Дефиниран от потребителя метод в Python език за програмиране са методи, които потребителят създава и се декларира с помощта на ключовата дума def с името на функцията.
- Полиморфизъм в Python предлага няколко желани качества, като например насърчава повторното използване на кодове, написани за различни класове и методи.
- Дъщерен клас е производен клас и получава своите атрибути от родителския клас.
- Полиморфизмът се постига и чрез отмяна на метода по време на изпълнение и претоварване на метода по време на компилиране.
- Полиморфизъм в Python също се постига чрез претоварване на оператори и методи на клас.