Polimorfizm w Python z PRZYKŁADAMI
Co to jest polimorfizm?
Polimorfizm można zdefiniować jako stan występujący w wielu różnych postaciach. Jest to koncepcja w Python programowanie, w którym obiekt zdefiniowany w Python można wykorzystać na różne sposoby. Umożliwia programiście zdefiniowanie wielu metod w klasie pochodnej i ma taką samą nazwę, jak w klasie nadrzędnej. Takie scenariusze obsługują przeciążanie metod w Python.
Polimorfizm w Operatorsy
Operator w Python pomaga wykonywać zadania matematyczne i wiele innych zadań programistycznych. Na przykład operator „+” pomaga w wykonywaniu dodawania między dwoma typami liczb całkowitych w Pythoni w ten sam sposób ten sam operator pomaga w łączeniu ciągów znaków w Python programowanie.
Weźmy przykład + (plus) operator w Poznaniu Python aby wyświetlić zastosowanie polimorfizmu w Python jak pokazano poniżej:
Python Kod:
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))
Wyjście:
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'>
Powyższy przykład można również uznać za przykład przeciążania operatora.
Polimorfizm w metodach zdefiniowanych przez użytkownika
Metoda zdefiniowana przez użytkownika w pliku Python język programowania to metody tworzone przez użytkownika i deklarowane za pomocą słowa kluczowego def z nazwą funkcji.
Polimorfizm w Python język programowania osiąga się poprzez przeciążanie i zastępowanie metod. Python definiuje metody ze słowem kluczowym def i o tej samej nazwie zarówno w klasie podrzędnej, jak i nadrzędnej.
Rozpatrzmy poniższy przykład: –
Python Kod:
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())
Wyjście:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
W powyższym kodzie istnieją dwie metody zdefiniowane przez użytkownika, obwód i obszar, zdefiniowane w klasach okręgu i kwadratu.
Jak pokazano powyżej, zarówno klasa Circle, jak i klasa Square wywołują tę samą nazwę metody, wyświetlając charakterystykę polimorfizmu w celu dostarczenia wymaganych wyników.
Polimorfizm w funkcjach
Wbudowane funkcje w Python są zaprojektowane i przystosowane do wykonywania kilku typów danych. W Python, Len()
jest jedną z kluczowych wbudowanych funkcji.
Działa na kilku typach danych: lista, krotka, ciąg i słownik. Funkcja Len() zwraca określone informacje dopasowane do wielu typów danych.
Na poniższym rysunku pokazano, jak można zastosować polimorfizm w Python w odniesieniu do wbudowanych funkcji: –
Poniższy program pomaga zilustrować zastosowanie polimorfizmu w Python: -
Python Kod:
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"}))
Wyjście:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
W powyższym przykładzie funkcja Len () z Python wykonuje polimorfizm odpowiednio dla typów danych łańcuchowych, listowych i słownikowych.
Polimorfizm i dziedziczenie
Dziedziczenie w Python można zdefiniować jako koncepcję programowania, w której zdefiniowana klasa potomna dziedziczy właściwości z innej klasy bazowej obecnej w Python.
Są dwa klucze Python koncepcje określane jako nadpisywanie metod i przeciążanie metod.
- W przypadku przeciążenia metody Python zapewnia możliwość tworzenia metod o tej samej nazwie w celu wykonania lub wykonania różnych funkcjonalności w danym fragmencie kodu. Pozwala przeciążać metody i wykorzystywać je do wykonywania różnych zadań w prostszy sposób.
- W metodzie zastępowania, Python nadpisuje wartość o podobnej nazwie w klasie nadrzędnej i podrzędnej.
Rozważmy następujący przykład polimorfizmu i dziedziczenia: –
Python Kod:
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())
Wyjście:
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
W powyższym kodzie metody mają tę samą nazwę zdefiniowaną jako metoda init i metoda area1. Obiekty klasy Square i prostokąt są następnie używane do wywołania obu metod w celu wykonania różnych zadań i uzyskania wyniku w postaci obszaru kwadratu i prostokąta.
Polimorfizm z metodami klasowymi
Python programowanie umożliwia programistom osiągnięcie polimorfizmu i przeciążania metod metodami klasowymi. Różne klasy w Python mogą mieć metody zadeklarowane pod tą samą nazwą w całym pliku Python kod.
In Pythonmożna zdefiniować dwie różne klasy. Jedna z nich byłaby klasą podrzędną i wywodzi atrybuty z innej zdefiniowanej klasy, zwanej klasą nadrzędną.
Poniższy przykład ilustruje koncepcję polimorfizmu za pomocą metod klasowych: –
Python Kod:
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()
Wyjście:
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.
W powyższym kodzie dwie różne klasy o nazwach flipkart i amazon używają tych samych nazw metod info i init, aby zapewnić odpowiednie wyceny produktów i dodatkowo zilustrować koncepcję polimorfizmu w Python.
Różnica między przeciążaniem metody a polimorfizmem w czasie kompilacji
W polimorfizmie w czasie kompilacji kompilator Python program rozwiązuje połączenie. Polimorfizm w czasie kompilacji osiąga się poprzez przeciążenie metody.
Python kompilator nie rozwiązuje wywołań w czasie wykonywania ze względu na polimorfizm. Jest to również klasyfikowane jako zastępowanie metod, w którym te same metody mają podobne sygnatury lub właściwości, ale stanowią część różnych klas.
Podsumowanie
- Polimorfizm można zdefiniować jako stan występujący w wielu różnych postaciach.
- Operator w Python pomaga w wykonywaniu zadań matematycznych i kilku innych zadań programistycznych.
- Metoda zdefiniowana przez użytkownika w pliku Python język programowania to metody tworzone przez użytkownika i deklarowane za pomocą słowa kluczowego def z nazwą funkcji.
- Polimorfizm w Python oferuje szereg pożądanych cech, np. promuje możliwość ponownego wykorzystywania kodu napisanego dla różnych klas i metod.
- Klasa podrzędna jest klasą pochodną i pobiera atrybuty z klasy nadrzędnej.
- Polimorfizm osiąga się również poprzez nadpisywanie metod w czasie wykonywania i przeciążenie metod w czasie kompilacji.
- Polimorfizm w Python osiąga się również poprzez przeciążanie operatorów i metody klasowe.