Junior — Middle
Обяснете концепцията за duck typing и как се различава от статичната типизация в програмирането.
sobes.tech AI
Отговор от AI
Duck typing — това е концепция в програмирането, при която типът на обекта не се определя по неговия клас или интерфейс, а по наличието на определени методи и свойства. Ако обектът се държи като "патица" (има необходимите методи), той се счита за подходящ.
Разлика от статичното типизиране:
- При статично типизиране, типовете се проверяват по време на компилация, и обектите трябва ясно да съответстват на определени типове.
- При duck typing, проверката се извършва по време на изпълнение, и важна е само съвместимостта на интерфейса (методи/свойства), а не наследяването или обявените типове.
Пример на Python (duck typing):
class Duck:
def quack(self):
print("Кря-кря")
class Person:
def quack(self):
print("Мога да крякам като патица")
def make_it_quack(thing):
thing.quack()
make_it_quack(Duck()) # Кря-кря
make_it_quack(Person()) # Мога да крякам като патица
Тук функцията не се интересува от типа на обекта, а само от наличието на метода quack.