Polymorfism i Python med EXEMPEL
Vad är polymorfism?
Polymorfism kan definieras som ett tillstånd som förekommer i många olika former. Det är ett koncept i Python programmering där ett objekt definierat i Python kan användas på olika sätt. Det tillåter programmeraren att definiera flera metoder i en härledd klass, och den har samma namn som finns i den överordnade klassen. Sådana scenarier stöder metodöverbelastning Python.
Polymorfism i Operatorer
En operatör i Python hjälper till att utföra matematiska och flera andra programmeringsuppgifter. Till exempel, "+"-operatorn hjälper till att utföra addition mellan två heltalstyper i Python, och på samma sätt hjälper samma operatör till med att sammanfoga strängar Python programmering.
Låt oss ta ett exempel på + (plus) Operatör i Python för att visa en tillämpning av polymorfism i Python enligt nedanstående:
Python Koda:
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))
Produktion:
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'>
Ovanstående exempel kan också betraktas som exemplet på operatörens överbelastning.
Polymorfism i användardefinierade metoder
En användardefinierad metod i Python programmeringsspråk är metoder som användaren skapar, och det deklareras med hjälp av nyckelordet def med funktionsnamnet.
Polymorfism i Python programmeringsspråk uppnås genom metodöverbelastning och åsidosättande. Python definierar metoder med nyckelord def och med samma namn i både barn- och förälderklass.
Låt oss ta följande exempel som visas nedan: –
Python Koda:
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())
Produktion:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
I ovanstående kod finns det två användardefinierade metoder, perimeter och area, definierade i cirkel- och kvadratklasser.
Som visas ovan anropar både cirkelklass och kvadratklass samma metodnamn som visar egenskaperna hos polymorfism för att leverera den önskade utdata.
Polymorfism i funktioner
Den inbyggda fungerar i Python är designade och kompatibla för att köra flera datatyper. I Python, Len()
är en av de viktigaste inbyggda funktionerna.
Det fungerar på flera datatyper: lista, tupel, sträng och ordbok. Funktionen Len () returnerar bestämd information anpassad till dessa många datatyper.
Följande figur visar hur polymorfism kan tillämpas i Python med relation till inbyggda funktioner: –
Följande program hjälper till att illustrera tillämpningen av polymorfism i Python: -
Python Koda:
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"}))
Produktion:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
I exemplet ovan, Len () funktion av Python utför polymorfism för sträng-, list- och ordboksdatatyper.
Polymorfism och arv
Arv i Python kan definieras som programmeringskonceptet där en definierad barnklass ärver egenskaper från en annan basklass som finns i Python.
Det finns två nyckel Python begrepp som kallas metodöverskridande och metodöverbelastning.
- Vid metodöverbelastning, Python ger funktionen att skapa metoder som har samma namn för att utföra eller exekvera olika funktioner i en given kod. Det gör det möjligt att överbelasta metoder och använder dem för att utföra olika uppgifter i enklare termer.
- I metod åsidosättande, Python åsidosätter värdet som delar ett liknande namn i föräldra- och barnklasser.
Låt oss ta följande exempel på polymorfism och arv som visas nedan: -
Python Koda:
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())
Produktion:
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
I ovanstående kod har metoderna samma namn definierade som init-metod och area1-metod. Objektet för klassen kvadrat och rektangel används sedan för att anropa de två metoderna för att utföra olika uppgifter och tillhandahålla utdata för arean av kvadrat och rektangel.
Polymorfism med klassmetoderna
Smakämnen Python programmering gör det möjligt för programmerare att uppnå polymorfism och metodöverbelastning med klassmetoder. De olika klasserna i Python kan ha metoder som deklareras i samma namn över hela Python koda.
In Python, två olika klasser kan definieras. En skulle vara barnklass, och den härleder attribut från en annan definierad klass som kallas förälderklass.
Följande exempel illustrerar begreppet polymorfism med klassmetoder: -
Python Koda:
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()
Produktion:
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.
I ovanstående kod använder två olika klasser som heter flipkart och amazon samma metodnamn info och init för att tillhandahålla respektive prisuppgift för produkten och ytterligare illustrera konceptet polymorfism i Python.
Skillnad mellan metodöverbelastning och kompileringstidspolymorfism
I kompileringstiden Polymorphism, kompilatorn av Python programmet löser samtalet. Kompileringstidspolymorfism åstadkoms genom metodöverbelastning.
Smakämnen Python kompilatorn löser inte anropen under körningstid för polymorfism. Det klassificeras också som metodöverskridande där samma metoder har liknande signaturer eller egenskaper, men de utgör en del av olika klasser.
Sammanfattning
- Polymorfism kan definieras som ett tillstånd som förekommer i många olika former.
- En operatör i Python hjälper till att utföra matematiska och flera andra programmeringsuppgifter.
- En användardefinierad metod i Python programmeringsspråk är metoder som användaren skapar, och det deklareras med hjälp av nyckelordet def med funktionsnamnet.
- Polymorfism i Python erbjuder flera önskvärda egenskaper, som att det främjar återanvändbarheten av koder skrivna för olika klasser och metoder.
- En barnklass är en härledd klass och den får sina attribut från föräldraklassen.
- Polymorfismen uppnås också genom överbelastning av körtidsmetoden och överbelastning av kompileringsmetoden.
- Polymorfism i Python uppnås också genom operatörsöverbelastning och klassmetoder.