JET School

Что такое Duck Typing?

Duck Typing — это принцип, используемый в Python и других динамически типизированных языках программирования. Он гласит, что важно не то, к какому типу принадлежит объект, а то, как он себя ведёт.

Идея основана на известной фразе:

"Если нечто ходит как утка и крякает как утка — значит, это утка."

То есть, если объект имеет метод quack() и fly(), то его можно использовать как утку, даже если он не является экземпляром класса Duck.

Пример:


class Duck:

def quack(self):

print("Кря-кря!")


class Person:

def quack(self):

print("Я умею крякать, как утка!")


def make_it_quack(thing):

thing.quack()


duck = Duck()

person = Person()


make_it_quack(duck) # Вывод: Кря-кря!

make_it_quack(person) # Вывод: Я умею крякать, как утка!


В этом примере функция make_it_quack не проверяет тип передаваемого объекта. Она просто вызывает метод quack() — и это работает, если метод существует. Именно это и есть Duck Typing.

Преимущества:

  • Код становится более гибким и расширяемым.
  • Нет жёстких ограничений по типам, что ускоряет разработку и прототипирование.

Важно знать:

Использование Duck Typing требует аккуратности. Если ожидаемый метод отсутствует, возникнет ошибка выполнения (runtime error). Чтобы избежать этого, часто применяют hasattr() или конструкции try-except.

Связанные термины:

Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!