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.