Поліморфізм в 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. Потім об’єкти класу square і rectangle використовуються для виклику двох методів для виконання різних завдань і надання виведення площі квадрата та прямокутника.
Поліморфізм з методами класу
Команда 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 компілятор не розпізнає виклики поліморфізму під час виконання. Він також класифікується як перевизначення методів, коли ті самі методи мають подібні підписи або властивості, але вони є частиною різних класів.
Підсумки
- Поліморфізм можна визначити як стан, який зустрічається в багатьох різних формах.
- Оператор в Python допомагає виконувати математичні та деякі інші завдання програмування.
- Визначений користувачем метод у Python Мова програмування — це методи, які створює користувач і оголошує їх за допомогою ключового слова def із назвою функції.
- Поліморфізм в Python пропонує кілька бажаних якостей, наприклад, сприяє повторному використанню кодів, написаних для різних класів і методів.
- Дочірній клас є похідним класом, і він отримує свої атрибути від батьківського класу.
- Поліморфізм також досягається через перевизначення методу під час виконання та перевантаження методу під час компіляції.
- Поліморфізм в Python також досягається за допомогою перевантаження операторів і методів класу.