Sobes.tech
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.