Polimorfismul în Python cu EXEMPLE

Ce este polimorfismul?

Polimorfismul poate fi definit ca o condiție care apare sub multe forme diferite. Este un concept în Python programare în care un obiect definit în Python poate fi folosit în moduri diferite. Permite programatorului să definească mai multe metode într-o clasă derivată și are același nume cu cel prezent în clasa părinte. Astfel de scenarii acceptă supraîncărcarea metodei în Python.

Polimorfismul în Operatori

Un operator în Python ajută la efectuarea sarcinilor matematice și a altor câteva sarcini de programare. De exemplu, operatorul „+” ajută la efectuarea adunării între două tipuri de întregi în Python, și în același mod, același operator ajută la concatenarea șirurilor în Python programare.

Să luăm un exemplu de + (plus) operator în Python pentru a afișa o aplicație a polimorfismului în Python după cum se arată mai jos:

Python Cod:

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))

ieșire:

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'>

Exemplul de mai sus poate fi privit și ca exemplu de supraîncărcare a operatorului.

Polimorfismul în metode definite de utilizator

O metodă definită de utilizator în Python limbajele de programare sunt metode pe care utilizatorul le creează și este declarat folosind cuvântul cheie def cu numele funcției.

Polimorfismul în Python limbajul de programare se realizează prin supraîncărcarea și suprascrierea metodei. Python definește metode cu cuvântul cheie def și cu același nume atât în ​​clasa copil, cât și în clasa părinte.

Să luăm următorul exemplu, așa cum se arată mai jos: -

Python Cod:

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())

ieșire:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

În codul de mai sus, există două metode definite de utilizator, perimetru și zonă, definite în clase cerc și pătrat.

După cum se arată mai sus, atât clasa cerc cât și clasa pătrată invocă același nume de metodă afișând caracteristica Polimorfismului pentru a furniza rezultatul necesar.

Polimorfismul în funcții

Funcțiile încorporate în Python sunt proiectate și făcute compatibile pentru a executa mai multe tipuri de date. În Python, Len() este una dintre funcțiile cheie încorporate.

Funcționează pe mai multe tipuri de date: listă, tuplu, șir și dicționar. Funcția Len () returnează informații precise aliniate cu aceste multe tipuri de date.

Figura următoare arată cum poate fi aplicat polimorfismul Python în legătură cu funcțiile încorporate: –

Polimorfismul în funcții

Următorul program ajută la ilustrarea aplicării polimorfismului în Python: -

Python Cod:

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"}))

ieșire:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

Polimorfismul în funcții

În exemplul de mai sus, funcția Len () de Python efectuează Polimorfism pentru tipurile de date șir, listă și, respectiv, dicționar.

Polimorfismul și moștenirea

Moștenirea în Python poate fi definit ca conceptul de programare în care o clasă copil definită moștenește proprietăți de la o altă clasă de bază prezentă în Python.

Există două chei Python concepte numite suprascriere metodei și supraîncărcare a metodei.

  • În supraîncărcarea metodei, Python oferă caracteristica de a crea metode care au același nume pentru a efectua sau executa diferite funcționalități într-o anumită bucată de cod. Permite supraîncărcarea metodelor și le folosește pentru a efectua diferite sarcini în termeni mai simpli.
  • În anularea metodei, Python înlocuiește valoarea care împărtășește un nume similar în clasele părinte și copil.

Să luăm următorul exemplu de polimorfism și moștenire, așa cum se arată mai jos:

Python Cod:

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())

ieșire:

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

În codul de mai sus, metodele au același nume definit ca metoda init și metoda area1. Obiectul clasei pătrat și dreptunghi sunt apoi folosite pentru a invoca cele două metode pentru a efectua sarcini diferite și pentru a furniza rezultatul ariei pătratului și dreptunghiului.

Polimorfismul cu metodele de clasă

Python programarea permite programatorilor să obțină polimorfismul și supraîncărcarea metodelor cu metode de clasă. Diferitele clase din Python poate avea metode care sunt declarate cu același nume în întreaga Python cod.

In Python, se pot defini două clase diferite. Una ar fi clasa copil și derivă atribute dintr-o altă clasă definită denumită clasă părinte.

Următorul exemplu ilustrează conceptul de polimorfism cu metode de clasă: –

Python Cod:

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()

ieșire:

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.

În codul de mai sus, două clase diferite denumite flipkart și amazon folosesc aceleași metode denume info și init pentru a oferi cotații de preț respective ale produsului și pentru a ilustra în continuare conceptul de polimorfism în Python.

Diferența dintre supraîncărcarea metodei și polimorfismul în timp de compilare

În Polymorphism în timp de compilare, compilatorul de Python programul rezolvă apelul. Polimorfismul în timp de compilare se realizează prin supraîncărcarea metodei.

Python compilatorul nu rezolvă apelurile în timpul rulării pentru polimorfism. Este, de asemenea, clasificată ca suprascriere a metodei, în care aceleași metode poartă semnături sau proprietăți similare, dar fac parte din clase diferite.

Rezumat

  • Polimorfismul poate fi definit ca o condiție care apare sub multe forme diferite.
  • Un operator în Python ajută la efectuarea sarcinilor matematice și a altor câteva sarcini de programare.
  • O metodă definită de utilizator în Python limbajele de programare sunt metode pe care utilizatorul le creează și este declarat folosind cuvântul cheie def cu numele funcției.
  • Polimorfismul în Python oferă mai multe calități dezirabile, cum ar fi promovează reutilizarea codurilor scrise pentru diferite clase și metode.
  • O clasă copil este o clasă derivată și își primește atributele de la clasa părinte.
  • Polimorfismul este, de asemenea, realizat prin suprascrierea metodei în timp de execuție și supraîncărcarea metodei în timp de compilare.
  • Polimorfismul în Python este, de asemenea, obținută prin supraîncărcarea operatorului și metodele de clasă.