Sobes.tech
Junior — Middle

Vysvětlete koncept duck typing a v čem se liší od statické typizace v programování.

sobes.tech AI

Odpověď od AI

Duck typing je koncept v programování, při kterém se typ objektu neurčuje podle jeho třídy nebo rozhraní, ale podle přítomnosti určitých metod a vlastností. Pokud se objekt chová jako "kachna" (má potřebné metody), je považován za vhodný.

Rozdíl od statického typování:

  • U statického typování jsou typy kontrolovány při kompilaci a objekty musí explicitně odpovídat definovaným typům.
  • U duck typing probíhá kontrola za běhu a důležitá je pouze kompatibilita rozhraní (metody/vlastnosti), nikoliv dědičnost nebo deklarované typy.

Příklad v Pythonu (duck typing):

class Duck:
    def quack(self):
        print("Kach-kach")

class Person:
    def quack(self):
        print("Mohu kvákat jako kachna")

def make_it_quack(thing):
    thing.quack()

make_it_quack(Duck())    # Kach-kach
make_it_quack(Person())  # Mohu kvákat jako kachna

Funkce se zde nezajímá o typ objektu, pouze o přítomnost metody quack.