> Что такое duck typing и динамическая типизация в Python (Python)

Уровень: junior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: JetLend

Стек: Python

> Пример ответа

Duck typing - это принцип, характерный для динамически типизированных языков, который гласит: "Если объект ходит как утка и крякает как утка, то это утка". В Python это означает, что тип объекта определяется не его классом, а наличием необходимых методов и атрибутов. Например, если функция ожидает объект с методом .read(), ей подойдёт как файл, так и StringIO - главное, чтобы метод существовал.

Динамическая типизация - это свойство языка, при котором типы переменных проверяются во время выполнения, а не на этапе компиляции. В Python вы можете присвоить одной переменной сначала число, потом строку, и это не вызовет ошибки до момента, пока вы не попытаетесь выполнить неподдерживаемую операцию (например, сложить строку с числом).

Пример:

PYTHON
class Duck:
def quack(self):
return "Quack!"
class Person:
def quack(self):
return "I'm quacking like a duck!"
def make_it_quack(thing):
print(thing.quack()) # duck typing: не важно, кто это, лишь бы был метод quack
make_it_quack(Duck()) # Quack!
make_it_quack(Person()) # I'm quacking like a duck!

Оба класса подходят, так как реализуют метод quack. Это и есть суть duck typing в контексте динамической типизации Python.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью