Polymorfisme i Python med EKSEMPLER
Hva er polymorfisme?
Polymorfisme kan defineres som en tilstand som forekommer i mange forskjellige former. Det er et konsept i Python programmering der et objekt er definert i Python kan brukes pรฅ forskjellige mรฅter. Den lar programmereren definere flere metoder i en avledet klasse, og den har samme navn som tilstede i den overordnede klassen. Slike scenarier stรธtter metodeoverbelastning inn Python.
Polymorfisme i Operatorer
En operatรธr i Python hjelper med รฅ utfรธre matematiske og flere andre programmeringsoppgaver. For eksempel hjelper '+'-operatoren med รฅ utfรธre addisjon mellom to heltallstyper i Python, og pรฅ samme mรฅte hjelper den samme operatรธren med รฅ sette sammen strenger Python programmering.
La oss ta et eksempel pรฅ + (pluss) operatรธr i Python for รฅ vise en anvendelse av polymorfisme 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))
Utgang:
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'>
Eksempelet ovenfor kan ogsรฅ betraktes som eksempelet pรฅ operatรธroverbelastning.
Polymorfisme i brukerdefinerte metoder
En brukerdefinert metode i Python programmeringssprรฅk er metoder som brukeren oppretter, og det er deklarert ved hjelp av nรธkkelordet def med funksjonsnavnet.
Polymorfisme i Python programmeringssprรฅk oppnรฅs gjennom metodeoverbelastning og overstyring. Python definerer metoder med def nรธkkelord og med samme navn i bรฅde underordnet og overordnet klasse.
La oss ta 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())
Utgang:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
I koden ovenfor er det to brukerdefinerte metoder, omkrets og areal, definert i sirkel- og kvadratklasser.
Som vist ovenfor, pรฅkaller bรฅde sirkelklasse og kvadratklasse det samme metodenavnet som viser egenskapene til polymorfisme for รฅ levere det nรธdvendige resultatet.
Polymorfisme i funksjoner
Den innebygde funksjoner i Python er designet og gjort kompatible for รฅ utfรธre flere datatyper. I Python, Len() er en av de viktigste innebygde funksjonene.
Den fungerer pรฅ flere datatyper: liste, tuppel, streng og ordbok. Len ()-funksjonen returnerer bestemt informasjon pรฅ linje med disse mange datatypene.
Fรธlgende figur viser hvordan polymorfisme kan brukes i Python i forhold til innebygde funksjoner: โ
Fรธlgende program hjelper til med รฅ illustrere anvendelsen av polymorfisme 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"}))
Utgang:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
I eksemplet ovenfor, Len () funksjon av Python utfรธrer polymorfisme for henholdsvis streng-, liste- og ordbokdatatyper.
Polymorfisme og arv
Arv i Python kan defineres som programmeringskonseptet der en barneklasse definert arver egenskaper fra en annen basisklasse som er tilstede i Python.
Det er to nรธkkel Python begreper kalt metodeoverstyring og metodeoverbelastning.
- Ved metodeoverbelastning, Python gir funksjonen til รฅ lage metoder som har samme navn for รฅ utfรธre eller utfรธre forskjellige funksjoner i et gitt kodestykke. Det gjรธr det mulig รฅ overbelaste metoder og bruker dem til รฅ utfรธre forskjellige oppgaver i enklere termer.
- I metodeoverstyring, Python overstyrer verdien som deler et lignende navn i foreldre- og barneklasser.
La oss ta fรธlgende eksempel pรฅ polymorfisme 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())
Utgang:
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 koden ovenfor har metodene samme navn definert som init-metoden og area1-metoden. Objektet til klassen kvadrat og rektangel brukes deretter til รฅ pรฅkalle de to metodene for รฅ utfรธre forskjellige oppgaver og gi utdata fra arealet av kvadrat og rektangel.
Polymorfisme med klassemetodene
Ocuco Python programmering gjรธr det mulig for programmerere รฅ oppnรฅ polymorfisme og metodeoverbelastning med klassemetoder. De forskjellige klassene i Python kan ha metoder som er deklarert i samme navn pรฅ tvers av Python kode.
In Python, kan to forskjellige klasser defineres. Den ene ville vรฆre barneklasse, og den henter attributter fra en annen definert klasse kalt overordnet klasse.
Fรธlgende eksempel illustrerer konseptet polymorfisme 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()
Utgang:
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 koden ovenfor bruker to forskjellige klasser navngitt som flipkart og amazon de samme metodenavnene info og init for รฅ gi respektive pristilbud pรฅ produktet og ytterligere illustrere konseptet polymorfisme i Python.
Forskjellen mellom metodeoverbelastning og kompileringstidspolymorfisme
I kompileringstidspolymorfisme, kompilatoren av Python programmet lรธser samtalen. Kompileringstidspolymorfisme oppnรฅs gjennom metodeoverbelastning.
Ocuco Python kompilatoren lรธser ikke kallene i lรธpet av kjรธretiden for polymorfisme. Det er ogsรฅ klassifisert som metodeoverstyrende der de samme metodene har lignende signaturer eller egenskaper, men de utgjรธr en del av forskjellige klasser.
Sammendrag
- Polymorfisme kan defineres som en tilstand som forekommer i mange forskjellige former.
- En operatรธr i Python hjelper med รฅ utfรธre matematiske og flere andre programmeringsoppgaver.
- En brukerdefinert metode i Python programmeringssprรฅk er metoder som brukeren oppretter, og det er deklarert ved hjelp av nรธkkelordet def med funksjonsnavnet.
- Polymorfisme i Python tilbyr flere รธnskelige kvaliteter, slik som det fremmer gjenbrukbarhet av koder skrevet for forskjellige klasser og metoder.
- En barneklasse er en avledet klasse, og den fรฅr sine attributter fra overordnet klasse.
- Polymorfismen oppnรฅs ogsรฅ gjennom overstyring av kjรธretidsmetoden og overbelastning av kompileringsmetoden.
- Polymorfisme i Python oppnรฅs ogsรฅ gjennom operatรธroverbelastning og klassemetoder.


