Python polimorfizm
"Polimorfizm" so‘zi "ko‘p shakllar" degan ma’noni anglatadi va dasturlashda u bir xil nomdagi ko‘plab obyektlar yoki sinflarda bajarilishi mumkin bo‘lgan usullar/funksiyalar/operatorlarga ishora qiladi.
Funksiya polimorfizmi
Turli obyektlarda qo‘llanilishi mumkin bo‘lgan Python funksiyasigalen()funksiyasi misol bo‘ladi.
ip
Stringlar uchun len() belgilar sonini qaytaradi:
Tuple
Kortejlar uchunlen()kortejdagi elementlar sonini qaytaradi:
Dictionary
Dictionarylar uchunlen()lug‘atdagi kalit/qiymat juftlari sonini qaytaradi:
Misol
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(len(thisdict))
O‘zingiz sinab ko‘ring »
Class polimorfizmi
Polimorfizm ko‘pincha Class usullarida qo‘llaniladi, bu yerda biz bir xil usul nomi bilan bir nechta sinflarga ega bo‘lishimiz mumkin.
Misol uchun, bizda uchta class bor deylik:Car,Boat va Plane va ularning barchasi move() deb nomlangan usulga ega:
Misol
Xuddi shu usul bilan turli classlar:
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Drive!")
class Boat:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Sail!")
class Plane:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Fly!")
car1 = Car("Ford", "Mustang") #Create a Car object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747") #Create a Plane object
for x in (car1, boat1, plane1):
x.move()
O‘zingiz sinab ko‘ring »
Oxirida for sikliga qarang. Polimorfizm tufayli biz uchta class uchun bir xil usulni bajarishimiz mumkin.
Irsiyat klassi polimorfizmi
Xuddi shu nomdagi bolalar sinflari bo‘lgan classlar haqida nima deyish mumkin? U erda polimorfizmdan foydalana olamizmi?
Ha. Agar biz yuqoridagi misoldan foydalansak va Vehicle deb nomlangan ota-klassni yaratsak vaCar,Boat,PlaneVehiclening kichik sinflarini qilsak, bolalar sinflari Vehicle usullarini meros qilib oladi, lekin ularni bekor qilishi mumkin:
Misol
Vehicle nomli class yarating va VehicleningCar,Boat,Plane bolalar sinflarini yarating:
class Vehicle:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Move!")
class Car(Vehicle):
pass
class Boat(Vehicle):
def move(self):
print("Sail!")
class Plane(Vehicle):
def move(self):
print("Fly!")
car1 = Car("Ford", "Mustang") #Create a Car object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747") #Create a Plane object
for x in (car1, boat1, plane1):
print(x.brand)
print(x.model)
x.move()
O‘zingiz sinab ko‘ring »
Child classlar ota-sinfdan xususiyatlar va usullarni meros qilib oladi.
Yuqoridagi misolda sizCarsinfi bo‘sh ekanligini ko‘rishingiz mumkin, lekin uVehicledan brand,modelva move()ni meros qilib oladi.
Boat va Plane sinflari Vehicledan brand,modelva move()ni ham meros qilib oladi, lekin ikkalasi ham move() usulini bekor qiladi.
Polimorfizm tufayli biz barcha classlar uchun bir xil usulni bajarishimiz mumkin.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
