Sobes.tech
Junior — Middle

Vysvetlite koncept duck typing a v čom sa líši od statickej typizácie v programovaní.

sobes.tech AI

Odpoveď od AI

Duck typing je koncept v programovaní, pri ktorom sa typ objektu neurčuje podľa jeho triedy alebo rozhrania, ale podľa prítomnosti určitých metód a vlastností. Ak sa objekt správa ako "kačica" (má potrebné metódy), považuje sa za vhodný.

Rozdiel od statického typovania:

  • Pri statickom typovaní sa typy kontrolujú počas kompilácie a objekty musia explicitne zodpovedať definovaným typom.
  • Pri duck typing sa kontrola vykonáva počas behu a dôležitá je len kompatibilita rozhrania (metódy/vlastnosti), nie dedičstvo alebo deklarované typy.

Príklad v Pythone (duck typing):

class Duck:
    def quack(self):
        print("Kvak kvak")

class Person:
    def quack(self):
        print("Môžem kvákať ako kačica")

def make_it_quack(thing):
    thing.quack()

make_it_quack(Duck())    # Kvak kvak
make_it_quack(Person())  # Môžem kvákať ako kačica

Tu funkcia sa nezaujíma o typ objektu, iba o prítomnosť metódy quack.