Junior
Dasturlash kontekstida polimorfizm nima?
sobes.tech AI
AIdan javob
Polimorfizm — bu turli sinflarga oid obyektlar bilan umumiy interfeys orqali ishlash imkonini beradigan tushuncha. Python'da bu asosan "duck typing" va meros olish orqali amalga oshiriladi.
Duck typing:
Agar obyekt talab qilinadigan operatsiyalarni bajarishga qodir bo'lsa (zarur metodlar va atributlarga ega bo'lsa), uning turi muhim emas.
# Duck typing misoli
class It:
def speak(self):
return "Gav!"
class Mushuk:
def speak(self):
return "Miy!"
def make_sound(animal):
return animal.speak()
# It va Mushuk turli sinflar bo'lishiga qaramay, make_sound ikkisi bilan ham ishlaydi
dog = It()
cat = Mushuk()
print(make_sound(dog))
print(make_sound(cat))
Meros olish orqali polimorfizm:
Subklasslar ota klass metodlarini qayta yozishi mumkin, o'ziga xos implementatsiya bilan.
# Meros olish orqali polimorfizm misoli
class Hayvon:
def speak(self):
raise NotImplementedError("Subklass bu metodni amalga oshirmog'i kerak")
class It(Hayvon):
def speak(self):
return "Gav!"
class Mushuk(Hayvon):
def speak(self):
return "Miy!"
def make_sound(animal):
return animal.speak()
# Turli subklass obyektlari o'z versiyasini chaqiradi
dog = It()
cat = Mushuk()
print(make_sound(dog))
print(make_sound(cat))
Afzalliklari:
- Kodni soddalashtiradi, uni yanada moslashuvchan va o'qilishi oson qiladi.
- Turli obyektlar kolleksiyasi bilan bir xil tarzda ishlash imkonini beradi.
- Yangi turlar bilan tizimni kengaytirishni osonlashtiradi, mavjud kodni o'zgartirmasdan.
Python standart kutubxonasidagi misollar:
len(),iter(),str()kabi ichki funksiyalar turli ma'lumot turlari bilan ishlaydi.- Operatorlar (masalan,
+raqamlar yig'indisi, satrlarni birlashtirish, ro'yxatlarni birlashtirish).