Sobes.tech
Junior — Middle

Magyarázza el a duck typing fogalmát és hogy különbözik a statikus típusosságtól a programozásban.

sobes.tech MI

Válasz az MI-től

A duck typing egy programozási koncepció, amelyben egy objektum típusát nem a osztálya vagy interfésze határozza meg, hanem bizonyos metódusok és tulajdonságok megléte. Ha egy objektum úgy viselkedik, mint egy "kacsa" (megfelelő metódusokkal rendelkezik), akkor megfelelőnek tekintik.

A statikus típusosságtól való különbség:

  • Statikus típusosságnál a típusokat fordítási időben ellenőrzik, és az objektumoknak egyértelműen meg kell felelniük a meghatározott típusoknak.
  • Duck typing esetén az ellenőrzés futás közben történik, és csak az interfész kompatibilitása (metódusok/ tulajdonságok) számít, nem az öröklődés vagy a deklarált típusok.

Python példában (duck typing):

class Duck:
    def quack(self):
        print("Krick-krack")

class Person:
    def quack(self):
        print("Még kacsa módjára krick-krack")

def make_it_quack(thing):
    thing.quack()

make_it_quack(Duck())    # Krick-krack
make_it_quack(Person())  # Még kacsa módjára krick-krack

Itt a függvény nem törődik az objektum típusával, csak a quack metódus meglétével.