Sobes.tech
Back to questions
Junior — Middle
66

Является ли полиморфизм в Python основанной на концепции утиной типизации?

Answer from AI

sobes.tech AI

Да, полиморфизм в Python во многом основан на концепции утиной типизации (duck typing). Это означает, что в Python важен не тип объекта, а наличие у него определённых методов и свойств, необходимых для выполнения операции. Например, если объект "крякает" и "ходит как утка", то Python позволит использовать его как утку, независимо от его фактического класса.

Пример:

class Duck:
    def quack(self):
        print("Кря-кря")

class Person:
    def quack(self):
        print("Я могу крякать как утка")

def make_it_quack(duck_like):
    duck_like.quack()

make_it_quack(Duck())   # Кря-кря
make_it_quack(Person()) # Я могу крякать как утка

Здесь функция make_it_quack не проверяет тип объекта, а просто вызывает метод quack. Это и есть проявление полиморфизма через утиную типизацию.