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: –

Polimorfizm w funkcjach

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

Polimorfizm w funkcjach

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.