It is shocking how much vodoo magic there is in a programming language marketed as "easy to learn and use". And with the recent addition of new syntax, I would hardly call Python easy.
class A():
@property
def a(self):
raise Exception('go away')
a = A()
then hasattr(a, 'a') will return False in Python 2.7 (and throw as expected in Python3)A true WTF moment, the tests and the API have been slightly broken for years, without anyone noticing.