Утиный набор текста - что насчет того, когда вам нужен конкретный шрифт?

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

def Add(x, y)
    print x + y

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

Использует ли Duck Typing объекты, а не параметры, подобные приведенному выше примеру?

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

Изменить

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

Person.Quack()
Duck.Quack()

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


person Finglas    schedule 30.07.2009    source источник


Ответы (1)


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

person Amok    schedule 30.07.2009
comment
+1 Пример метода Add отлично подойдет для строк. Что касается +, много разных типов будут работать. - person S.Lott; 30.07.2009
comment
Это то, что я прочитал / понял, однако, что происходит, когда вы не хотите, чтобы они использовали дату. В случае с калькулятором вам придется проверять типы данных. Таким образом аннулируется Duck Typing. - person Finglas; 30.07.2009
comment
@Dockers: зачем проверять типы данных? Почему калькулятор не может работать с датами и строками? - person S.Lott; 30.07.2009
comment
Потому что это должен быть числовой калькулятор. Представьте, что спецификация заключалась в создании простого калькулятора, и если пользователь вводит что-либо, кроме цифр 0–9, он получает понятное сообщение об ошибке. - person Finglas; 30.07.2009
comment
Затем вам нужно проверить ввод, прежде чем он попадет в этот метод. - person Amok; 31.07.2009