Duck Typing Python-da və bəzi digər dinamik dillərdə istifadə olunan bir anlayışdır. Bu prinsipə əsasən, bir obyektin hansı tipə (class-a) məxsus olması deyil, hansı funksionallığa malik olması önəmlidir.
Bu ifadə məşhur bir aforizmdən gəlir:
"Əgər bir şey ördək kimi gəzir, ördək kimi səs çıxarırsa, deməli, o ördəkdir."
Yəni, bir obyektin fly() və quack() metodları varsa, biz onun mütləq Duck adlı sinifdən törəməsinə ehtiyac duymuruq — sadəcə bu metodlara malik olması kifayətdir.
class Duck:
def quack(self):
print("Vak vak!")
class Person:
def quack(self):
print("Mən ördək kimi danışa bilirəm!")
def make_it_quack(thing):
thing.quack()
duck = Duck()
person = Person()
make_it_quack(duck) # Çıxış: Vak vak!
make_it_quack(person) # Çıxış: Mən ördək kimi danışa bilirəm!
Bu nümunədə make_it_quack funksiyası heç bir tip yoxlaması aparmır — sadəcə quack() metodunun mövcudluğuna güvənir. Bu da duck typing prinsipi ilə işləyir.
Duck Typing istifadə olunarkən ehtiyatlı olmaq lazımdır, çünki metod yoxdursa, runtime error (işləmə zamanı xəta) ilə qarşılaşmaq mümkündür. Bunun qarşısını almaq üçün hasattr() və ya try-except blokları istifadə olunur.
IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!