Duck typing — это концепция программирования, где пригодность объекта определяется наличием определённых методов и атрибутов, а не его фактическим классом или типом.
Название происходит из фразы: "Если это ходит как утка и крякает как утка, то это утка."
Python не проверяет тип объекта явно. Вместо этого он проверяет, имеет ли объект требуемое поведение — то есть необходимые методы или атрибуты — в момент их вызова.
Например, если функция вызывает .speak() на объекте, Python просто пытается его выполнить. Любой объект, у которого есть метод .speak(), будет работать, независимо от его класса:
class Dog:
def speak(self):
return "Woof"
class Cat:
def speak(self):
return "Meow"
def make_sound(animal):
print(animal.speak())
make_sound(Dog()) # Woof
make_sound(Cat()) # Meow
AttributeErrorDuck typing предпочтителен в Python, когда ты хочешь, чтобы функции или классы работали с несколькими типами. В случаях, где нужна явная валидация типов, используй isinstance() или модуль typing для type hints.
Duck typing в Python проверяет объявленный тип класса объекта во время компиляции перед попыткой вызвать его методы.
Новый — ещё не проверен сообществом
Вы