Sobes.tech
Junior — Middle

Објасните концепт duck typing и у чему се разликује од статичке типизације у програмирању.

sobes.tech АИ

Одговор од АИ

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.