Печатание утки - что делать, когда вам нужен конкретный тип?

Скажем, вы делаете калькулятор на динамическом языке (Python и т. Д.) И у вас есть метод add.

def Add(x, y)
    print x + y

Теперь, если вы передадите что-либо, кроме числа, которое будет неправильным, вам нужна проверка типа данных.

Duck Typing об объектах в отличие от параметров, подобных приведенному выше примеру?

Кто-нибудь может объяснить дальше?

редактировать

Под объектами я имею в виду:

Person.Quack()
Duck.Quack()

Не заботясь о том, что передается в методы.

1 ответ

Решение

Утиная печать не заботится о том, с какими объектами вы работаете, если они поддерживают необходимые операции. Так что, если + - это конкатенация строк, тогда передача строк в Add будет в порядке. Если даты поддерживают операцию +, то и с датами в порядке.

Другие вопросы по тегам