Python @property decorator no funciona

¿Alguien podría encontrar un problema con este decorador @property? Parece que no puedo hacerlo afirmar correctamente. Estoy seguro de que estoy haciendo algo muy simple mal, pero ¿puede alguien apuntar mis ojos cansados ​​en la dirección correcta, por favor?

class A: def __init__(self): self.a = 0 self._b = 0 @property def b(self): return self.b @b.getter def b(self): if self._b is None: return 0 return self._b @b.setter def b(self, val): self._b = (val * 20) def test_getter_setter(): obj = A() obj.a = 1 #obj.b = 2 print obj.a, obj.b obj.b = 2 print obj.a, obj.b assert obj.b == 40 test_getter_setter() 

El decorador @property solo funciona en nuevas clases de estilo . Heredar de object :

 class A(object): 

Con ese cambio su función de prueba pasa.