3 ms·
> In my experience, type errors in Python get discovered during testing That would be the optimistic view. In reality, `NoneType has no attribute Foo` errors h
by yen223 9y ago
> In my experience, type errors in Python get discovered during testing
That would be the optimistic view. In reality, `NoneType has no attribute Foo` errors happen in production all the time.
- xapata 9y agoPerhaps because someone got into the (bad) habit of returning Nones instead of raising errors. Errors should never pass silently, etc. The older Python APIs have that C habit of sentinel values, but more modern style is to raise an error on failure.
- yen223 9y agoFunctions implicitly returns None if you forget to provide a return value on any of the branches. This is an error that can easily slip past eyeball reviews, since this is caused by the absence of something.
- xapata 9y agoShouldn't unit tests be exploring all the code paths? I know that's tough to enforce, but it's ideal. Regardless of whether you use a static analyzer. And Python does have static analyzers, including for typing.