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.


