Polymorfi i Python med EKSEMPLER
Hvad er polymorfi?
Polymorfi kan defineres som en tilstand, der forekommer i mange forskellige former. Det er et koncept i Python programmering, hvor et objekt defineret i Python kan bruges på forskellige måder. Det giver programmøren mulighed for at definere flere metoder i en afledt klasse, og den har samme navn som til stede i den overordnede klasse. Sådanne scenarier understøtter metodeoverbelastning i Python.
Polymorfi i Operatorer
En operatør i Python hjælper med at udføre matematiske og flere andre programmeringsopgaver. For eksempel hjælper '+' operatoren med at udføre addition mellem to heltalstyper i Python, og på samme måde hjælper den samme operator med at sammenkæde strenge ind Python programmering.
Lad os tage et eksempel på + (plus) operatør i Python at vise en anvendelse af polymorfi i Python som vist nedenfor:
Python Kode:
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))
Output:
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'>
Ovenstående eksempel kan også betragtes som eksemplet på operatøroverbelastning.
Polymorfi i brugerdefinerede metoder
En brugerdefineret metode i Python programmeringssprog er metoder, som brugeren opretter, og det erklæres ved hjælp af nøgleordet def med funktionsnavnet.
Polymorfi i Python programmeringssprog opnås gennem metodeoverbelastning og tilsidesættelse. Python definerer metoder med def nøgleord og med samme navn i både børne- og forældreklasse.
Lad os tage følgende eksempel som vist nedenfor: –
Python Kode:
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())
Output:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
I ovenstående kode er der to brugerdefinerede metoder, omkreds og areal, defineret i cirkel- og kvadratklasser.
Som vist ovenfor påberåber både cirkelklasse og kvadratklasse det samme metodenavn, der viser karakteristikken for polymorfi for at levere det nødvendige output.
Polymorfi i funktioner
Den indbyggede funktioner i Python er designet og gjort kompatible til at udføre flere datatyper. I Python, Len()
er en af de vigtigste indbyggede funktioner.
Det virker på flere datatyper: liste, tuple, streng og ordbog. Funktionen Len () returnerer bestemt information tilpasset disse mange datatyper.
Følgende figur viser, hvordan polymorfi kan anvendes i Python i forhold til indbyggede funktioner: –
Følgende program hjælper med at illustrere anvendelsen af polymorfi i Python-
Python Kode:
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"}))
Output:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
I ovenstående eksempel, Len () funktion af Python udfører polymorfi for henholdsvis streng-, liste- og ordbogsdatatyper.
Polymorfi og arv
Arv i Python kan defineres som programmeringskonceptet, hvor en underordnet klasse defineret arver egenskaber fra en anden basisklasse, der er til stede i Python.
Der er to nøgler Python begreber kaldet metodeoverstyring og metodeoverbelastning.
- Ved metodeoverbelastning, Python giver funktionen til at skabe metoder, der har samme navn til at udføre eller udføre forskellige funktionaliteter i et givet stykke kode. Det giver mulighed for at overbelaste metoder og bruger dem til at udføre forskellige opgaver i enklere termer.
- I metodetilsidesættelse, Python tilsidesætter den værdi, der deler et lignende navn i forældre- og børneklasser.
Lad os tage følgende eksempel på polymorfi og arv som vist nedenfor: -
Python Kode:
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())
Output:
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 ovenstående kode har metoderne det samme navn defineret som init-metoden og area1-metoden. Objektet af klassen kvadrat og rektangel bruges derefter til at påberåbe de to metoder til at udføre forskellige opgaver og give output af arealet af kvadrat og rektangel.
Polymorfi med klassemetoderne
Python programmering gør det muligt for programmører at opnå polymorfi og metodeoverbelastning med klassemetoder. De forskellige klasser i Python kan have metoder, der er erklæret i samme navn på tværs af Python kode.
In Python, kan to forskellige klasser defineres. Den ene ville være børneklasse, og den udleder attributter fra en anden defineret klasse, der betegnes som overordnet klasse.
Følgende eksempel illustrerer begrebet polymorfi med klassemetoder: -
Python Kode:
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()
Output:
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 ovenstående kode bruger to forskellige klasser navngivet som flipkart og amazon de samme metodenavne info og init til at give respektive pristilbud på produktet og yderligere illustrere begrebet polymorfisme i Python.
Forskel mellem metodeoverbelastning og kompileringstidspolymorfi
I kompileringstids polymorfisme, kompilatoren af Python programmet løser opkaldet. Kompileringstidspolymorfi opnås gennem metodeoverbelastning.
Python compileren løser ikke opkaldene under kørselstiden for polymorfi. Det er også klassificeret som metodeoverstyrende, hvor de samme metoder har lignende signaturer eller egenskaber, men de udgør en del af forskellige klasser.
Resumé
- Polymorfi kan defineres som en tilstand, der forekommer i mange forskellige former.
- En operatør i Python hjælper med at udføre matematiske og flere andre programmeringsopgaver.
- En brugerdefineret metode i Python programmeringssprog er metoder, som brugeren opretter, og det erklæres ved hjælp af nøgleordet def med funktionsnavnet.
- Polymorfi i Python tilbyder flere ønskværdige kvaliteter, såsom det fremmer genanvendeligheden af koder skrevet til forskellige klasser og metoder.
- En børneklasse er en afledt klasse, og den får sine attributter fra forældreklassen.
- Polymorfien opnås også gennem tilsidesættelse af run-time-metoden og overbelastning af kompilerings-tidsmetoden.
- Polymorfi i Python opnås også gennem operatøroverbelastning og klassemetoder.