The cached property is definatly the best suggestion. If not using that, I would get in the habit of using try: except in these situations. That is syntactially simple and very common, so others reading your code will be able to deduce your intent from the code.
Gribouillis commented: nice help and link +13
Gribouillis commented: This diagnostic may help other members. +13
TrustyTony commented: Good effort, even has little too much automagic things +12
Gribouillis commented: thanks for sharing +13
TrustyTony commented: Good balance of expression! Continue same way! +3