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.
Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!