Sobes.tech
Junior — Middle

Wyjaśnij koncepcję duck typing i czym różni się od statycznego typowania w programowaniu.

sobes.tech AI

Odpowiedź od AI

Duck typing to koncepcja w programowaniu, w której typ obiektu jest określany nie na podstawie jego klasy lub interfejsu, lecz na podstawie obecności określonych metod i właściwości. Jeśli obiekt zachowuje się jak "kaczka" (posiada niezbędne metody), jest uważany za odpowiedni.

Różnica od statycznego typowania:

  • W statycznym typowaniu typy są sprawdzane na etapie kompilacji, a obiekty muszą wyraźnie odpowiadać zdefiniowanym typom.
  • W duck typing sprawdzanie odbywa się podczas wykonywania, i ważna jest tylko zgodność interfejsu (metody/właściwości), a nie dziedziczenie czy deklarowane typy.

Przykład w Python (duck typing):

class Duck:
    def quack(self):
        print("Kwa kwa")

class Person:
    def quack(self):
        print("Mogę kwakać jak kaczka")

def make_it_quack(thing):
    thing.quack()

make_it_quack(Duck())    # Kwa kwa
make_it_quack(Person())  # Mogę kwakać jak kaczka

Tu funkcja nie dba o typ obiektu, a tylko o obecność metody quack.