What is your strategy to avoid dynamic typing errors in Python (NoneType has no attribute x)?
<p>Python is one of my favorite languages, but I really have a love/hate relationship with it's dynamicness. Apart from the advantages, it often results in me forgetting to check a type, trying to call an attribute and getting the NoneType (or any other) has no attribute x error. A lot of them are pretty harmless but if not handled correctly they can bring down your entire app/process/etc. Over time I got better predicting where these could pop up and adding explicit type checking, but because I'm only human I miss one occasionally and then some end-user finds it.</p>

<p>So I'm interested in your strategy to avoid these. Do you use type-checking decorators? Maybe special object wrappers? Please share...</p>
