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.


ULASHISH

Funksiya polimorfizmi

Turli obyektlarda qo‘llanilishi mumkin bo‘lgan Python funksiyasigalen()funksiyasi misol bo‘ladi.

ip

Stringlar uchun len() belgilar sonini qaytaradi:

Misol

x = "Hello World!" print(len(x))
O‘zingiz sinab ko‘ring »

Tuple

Kortejlar uchunlen()kortejdagi elementlar sonini qaytaradi:

Misol

mytuple = ("apple", "banana", "cherry") print(len(mytuple))
O‘zingiz sinab ko‘ring »

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!