Sobes.tech
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).