Polimorfizam u Python s PRIMJERIMA
โก Pametni saลพetak
Polimorfizam u Python omoguฤuje jednom suฤelju rad s objektima razliฤitih tipova, tako da se ista metoda ili operator ponaลกa drugaฤije ovisno o objektu. To se pojavljuje kroz preoptereฤenje operatora, ugraฤene funkcije, korisniฤki definirane metode i nasljeฤivanje na Python Programi.

ล to je polimorfizam?
Polimorfizam se moลพe definirati kao stanje koje se javlja u mnogo razliฤitih oblika. To je koncept u Python programiranje u kojem je objekt definiran u Python mogu se koristiti na razliฤite naฤine. Programeru omoguฤuje definiranje viลกe metoda u izvedenoj klasi, a ima isto ime kao i u nadreฤenoj klasi. Takvi scenariji podrลพavaju preoptereฤenje metoda u Python.
Polimorfizam u Operaulagatelji
Operater u Python pomaลพe u obavljanju matematiฤkih i nekoliko drugih programskih zadataka. Na primjer, operator '+' pomaลพe u izvoฤenju zbrajanja izmeฤu dva tipa cijelih brojeva Python, a na isti naฤin, isti operator pomaลพe u ulanฤavanju nizova Python programiranje.
Uzmimo primjer + (plus) operater u Python za prikaz primjene polimorfizma u Python kao ลกto je prikazano u nastavku:
Python Code:
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))
Izlaz:
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'>
Gore navedeni primjer takoฤer se moลพe smatrati primjerom preoptereฤenja operatora.
Polimorfizam u korisniฤki definiranim metodama
Korisniฤki definirana metoda u Python programski jezik su metode koje sam kreira, a deklarira se pomoฤu kljuฤne rijeฤi def uz naziv funkcije.
Polimorfizam u Python programski jezik se postiลพe preoptereฤenjem i nadjaฤavanjem metode. Python definira metode s kljuฤnom rijeฤi def i istim imenom u podreฤenoj i nadreฤenoj klasi.
Uzmimo sljedeฤi primjer kao ลกto je prikazano u nastavku: โ
Python Code:
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())
Izlaz:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
U gornjem kodu postoje dvije korisniฤki definirane metode, opseg i povrลกina, definirane u klasama kruga i kvadrata.
Kao ลกto je gore prikazano, i klasa kruga i klasa kvadrata pozivaju se na isto ime metode prikazujuฤi karakteristiku polimorfizma za isporuku traลพenog rezultata.
Polimorfizam u funkcijama
Ugraฤene funkcije u Python su dizajnirani i napravljeni kompatibilni za izvrลกavanje nekoliko vrsta podataka. U Python, len() je jedna od kljuฤnih ugraฤenih funkcija.
Radi s nekoliko tipova podataka: popis, n-torka, niz znakova i rjeฤnik. Funkcija len() vraฤa odreฤene informacije usklaฤene s tim mnogim tipovima podataka.
Sljedeฤa slika pokazuje kako se polimorfizam moลพe primijeniti u Python u odnosu na ugraฤene funkcije: โ
Sljedeฤi program pomaลพe u ilustriranju primjene polimorfizma u Python: -
Python Code:
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"}))
Izlaz:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
U gornjem primjeru, funkcija len() od Python izvodi polimorfizam za tipove podataka niza, popisa i rjeฤnika.
Polimorfizam i nasljeฤivanje
Nasljedstvo u Python moลพe se definirati kao koncept programiranja u kojem definirana podreฤena klasa nasljeฤuje svojstva od druge osnovne klase prisutne u Python.
Postoje dva kljuฤa Python koncepti koji se nazivaju nadjaฤavanje metode i preoptereฤenje metode.
- Kod preoptereฤenja metode, Python pruลพa znaฤajku stvaranja metoda koje imaju isti naziv za izvoฤenje ili izvrลกavanje razliฤitih funkcija u danom dijelu koda. Omoguฤuje preoptereฤenje metoda i koristi ih za obavljanje razliฤitih zadataka na jednostavniji naฤin.
- U nadjaฤavanju metode, Python nadjaฤava vrijednost koja dijeli sliฤno ime u roditeljskim i podreฤenim klasama.
Uzmimo sljedeฤi primjer polimorfizma i nasljeฤivanja kao ลกto je prikazano u nastavku: โ
Python Code:
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())
Izlaz:
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
U gornjem kodu, metode imaju isto ime definirano kao metoda init i metoda area1. Objekt klase kvadrat i pravokutnik zatim se koriste za pozivanje dviju metoda za izvoฤenje razliฤitih zadataka i davanje izlaznih podataka povrลกine kvadrata i pravokutnika.
Polimorfizam s metodama klase
The Python programiranje omoguฤuje programerima postizanje polimorfizma i preoptereฤenja metoda metodama klase. Razliฤite klase u Python mogu imati metode koje su deklarirane pod istim imenom u cijelom Python kodirati.
In Python, mogu se definirati dvije razliฤite klase. Jedna bi bila klasa dijete i ona izvodi atribute iz druge definirane klase koja se naziva roditeljska klasa.
Sljedeฤi primjer ilustrira koncept polimorfizma s metodama klase: โ
Python Code:
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()
Izlaz:
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.
U gornjem kodu, dvije razliฤite klase nazvane kao flipkart i amazon koriste istu metodu naziva info i init za pruลพanje odgovarajuฤih kotacija cijena proizvoda i daljnju ilustraciju koncepta polimorfizma u Python.
Razlika izmeฤu preoptereฤenja metode i polimorfizma tijekom kompajliranja
U polimorfizmu vremena kompajliranja, prevodilac Python program rjeลกava poziv. Polimorfizam tijekom kompajliranja postiลพe se preoptereฤenjem metode.
The Python prevodilac ne rjeลกava pozive tijekom vremena izvoฤenja za polimorfizam. Takoฤer se klasificira kao nadjaฤavanje metode pri ฤemu iste metode nose sliฤne potpise ili svojstva, ali ฤine dio razliฤitih klasa.


