Python polimorfizam, Python objektno orijentirano programiranje
Python je vrlo svestran jezik koji također uključuje objektno orijentirano programiranje.
U ovom članku ćemo se osvrnuti na Python polimorfizam
3 minute
U Python programiranju, polimorfizam poprima ključnu važnost, omogućavajući vam da pišete čist kod, favorizujući vrijeme razvoja i pojednostavljujući održavanje.
Python polimorfizam
Šta je polimorfizam: riječ polimorfizam znači imati mnogo oblika. Nello razvoj softvera, polimorfizam znači definiranje različitih tipova funkcija, ali sve s istim imenom. Ključna razlika je tip podataka i broj argumenata koji se koriste u funkciji.
Primjer ugrađenih polimorfnih funkcija:
# Python program to demonstrate in-built poly-
# morphic functions
# len() being used for a string
print(len("geeks"))
# len() being used for a list
print(len([10, 20, 30]))
izlaz
5 3
Primjeri polimorfnih funkcija:
# A simple Python function to demonstrate
# Polymorphism
def add(x, y, z = 0):
return x + y+z
# Driver code
print(add(2, 3))
print(add(2, 3, 4))
izlaz
5
9
Polimorfizam sa metodama klasa:
Sljedeći kod pokazuje kako u Python programiranju možete koristiti dva različita tipa klasa, na isti način. Kreirajmo petlju za ponavljanje kroz niz objekata. Zatim pozivamo metode bez brige o vrsti klase svakog objekta. Pretpostavimo da ove metode zaista postoje u svakoj klasi.
class India():
def capital(self):
print("New Delhi is the capital of India.")
def language(self):
print("Hindi is the most widely spoken language of India.")
def type(self):
print("India is a developing country.")
class USA():
def capital(self):
print("Washington, D.C. is the capital of USA.")
def language(self):
print("English is the primary language of USA.")
def type(self):
print("USA is a developed country.")
obj_ind = India()
obj_usa = USA()
for country in (obj_ind, obj_usa):
country.capital()
country.language()
country.type()
izlaz
New Delhi je glavni grad Indije.
Hindi je najrasprostranjeniji jezik Indije.
Indija je zemlja u razvoju.
Washington, DC je glavni grad SAD-a.
Engleski je primarni jezik SAD.
SAD je razvijena zemlja.
Polimorfizam sa nasljeđivanjem:
U Python programiranju, polimorfizam nam omogućava da definiramo metode u podređenoj klasi koje imaju isto ime kao metode u nadređenoj klasi. U nasljeđivanju, podređena klasa nasljeđuje metode od roditeljske klase. Međutim, možete modificirati metodu u podređenoj klasi koja je naslijedila od nadređene klase. Ovo je posebno korisno u slučajevima kada se metoda naslijeđena od roditeljske klase ne uklapa savršeno u podređenu klasu. U takvim slučajevima ponovo implementiramo metodu u podređenoj klasi. Ovaj proces ponovne implementacije metode u podređenoj klasi je poznat kao Metod Overriding .
class Bird:
def intro(self):
print("There are many types of birds.")
def flight(self):
print("Most of the birds can fly but some cannot.")
class sparrow(Bird):
def flight(self):
print("Sparrows can fly.")
class ostrich(Bird):
def flight(self):
print("Ostriches cannot fly.")
obj_bird = Bird()
obj_spr = sparrow()
obj_ost = ostrich()
obj_bird.intro()
obj_bird.flight()
obj_spr.intro()
obj_spr.flight()
obj_ost.intro()
obj_ost.flight()
izlaz
Postoji mnogo vrsta ptica.
Većina ptica može letjeti, ali neke ne mogu.
Postoji mnogo vrsta ptica.
Vrapci mogu da lete.
Postoji mnogo vrsta ptica.
Ostrige ne mogu da lete.
Polimorfizam s funkcijom i objektima:
Također možete kreirati funkciju koja može prihvatiti bilo koji objekt, dopuštajući polimorfizam. U ovom primjeru programiranja na Python-u, kreiramo funkciju pod nazivom “func()” koja će prihvatiti objekt koji ćemo nazvati “obj”. Iako koristimo naziv “obj”, bilo koji instancirani objekt može se pozvati u ovoj funkciji. Dakle, dajmo funkciji nešto da radi koja koristi “obj” objekat koji smo joj prenijeli. U ovom slučaju, pozivamo tri metode, naime, capital(), Language() i type(), od kojih je svaki definiran u dvije klase “India” i “USA”. Zatim, instancirajmo i “India” i “USA” klase, ako ih već nemamo. S njima možemo pozvati njihovu akciju koristeći istu funkciju func():
def func(obj):
obj.capital()
obj.language()
obj.type()
obj_ind = India()
obj_usa = USA()
func(obj_ind)
func(obj_usa)
kod: Implementacija polimorfizma s funkcijom
class India():
def capital(self):
print("New Delhi is the capital of India.")
def language(self):
print("Hindi is the most widely spoken language of India.")
def type(self):
print("India is a developing country.")
class USA():
def capital(self):
print("Washington, D.C. is the capital of USA.")
def language(self):
print("English is the primary language of USA.")
def type(self):
print("USA is a developed country.")
def func(obj):
obj.capital()
obj.language()
obj.type()
obj_ind = India()
obj_usa = USA()
func(obj_ind)
func(obj_usa)
izlaz
New Delhi je glavni grad Indije.
Hindi je najrasprostranjeniji jezik Indije.
Indija je zemlja u razvoju.
Washington, DC je glavni grad SAD-a.
Engleski je primarni jezik SAD.
SAD je razvijena zemlja.
Jednostavan primjer python polimorfizma:
Python polimorfizam korištenjem nasljeđivanja i nadjačavanja metoda:
class Animal:
def speak(self):
raise NotImplementedError("Subclass must implement this method")
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# Create a list of Animal objects
animals = [Dog(), Cat()]
# Call the speak method on each object
for animal in animals:
print(animal.speak())
izlaz
Vau! Meow!