When should I use type checking (if ever) in Python?

我只是一个虾纸丫 提交于 2019-12-23 10:19:14

问题


I'm starting to learn Python and as a primarily Java developer the biggest issue I am having is understanding when and when not to use type checking. Most people seem to be saying that Python code shouldn't need type checking, but there are many cases when I believe it is necessary. For example, let's say I need to use a method parameter to perform an arithmetic operation, why shouldn't I make sure the argument is a numeric data type?

This issue is not only limited to functions. The same thought process occurs to me for class variables. Why and when should I or shouldn't I use properties (using @property) to check type instead of regularly implemented class variables?

This is a new way of approaching development for me so I would appreciate help understanding.


回答1:


It's not Pythonic to check type info, use duck typing instead: if it looks like a duck, walks like a duck and quacks like a duck then it is a duck.

def quack(duck):
    duck.quack()

this will only run if duck has a callable quack attrubute, it will raise an exception otherwise which can be caught by the caller.




回答2:


The simple answer is probably start without any typechecking and see what happens. You'll probably find out - as I did 17 years ago and much to my surprise - that you need it way less than you believe. For the record used to think you couldn't hope to write anything but quick scripts and toy programs without strict typechecking and lost a lot of time fighting against the language until I started reading serious python apps code and the stdlib code and found out it just worked without.



来源:https://stackoverflow.com/questions/41305139/when-should-i-use-type-checking-if-ever-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!