Объясните концепцию duck typing и в чем ее отличие от статической типизации в программировании.

Duck typing — это концепция в программировании, при которой тип объекта определяется не по его классу или интерфейсу, а по наличию определённых методов и свойств.

Короткий ответ

Что ответить на собеседовании

Duck typing — это концепция в программировании, при которой тип объекта определяется не по его классу или интерфейсу, а по наличию определённых методов и свойств. Если объект ведёт себя как "утка" (имеет необходимые методы), то он считается подходящим.

Подробный разбор

Ответ с пояснениями

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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее