В методах Python немного странно, по крайней мере, по сравнению с другими языками. Функция, скажем, в C++, выходит что-то вроде этого:Методы, типы и Python
void foo(int i){
cout << i*2 << "\n";
}
Это гарантирует, что объект передается в эту функцию, на самом деле является целым числом. Однако в Python та же функция выглядит следующим образом:
def foo(i):
print i*2
Эта функция не требует i
быть целым числом, не говоря уже номер. Вы могли бы даже пройти в строку. Поэтому мой вопрос: каков общий подход к обработке этого при написании кода? Вообще говоря, лучше ли проверять тип и выкидывать сообщение об ошибке, если оно используется некорректно, или предпочитает вообще не проверять и считать, что правильный тип был передан?
Вы прочитали, например. https://docs.python.org/3/glossary.html#term-duck-typing? На SO также есть много связанных вопросов: http://stackoverflow.com/q/11328920/3001761 - это начало. – jonrsharpe
Кроме того, проверка типа и выдача ошибки совершенно бессмысленна, поскольку в любом случае она будет вызывать ошибку, если тип несовместим. – wvdz
Похоже, вы никогда не слышали о динамически типизированном языке. Python вряд ли является единственным: Javascript и Ruby - это два других, с которыми вы можете столкнуться, но их гораздо больше. –