Estoy iniciando Python, así que ten paciencia si me falta algo obvio. He leído sobre los decoradores y cómo funcionan, y estoy tratando de entender cómo se traduce esto:
class SomeObject(object): @property def test(self): return "some value" @test.setter def test(self, value): print(value)
Por lo que he leído, esto debería convertirse en:
class SomeObject(object): def test(self): return "some value" test = property(test) def test(self, value): print(value) test = test.setter(test)
Sin embargo, cuando bash esto, me sale
AttributeError: 'function' object has no attribute 'setter'
¿Alguien puede explicar cómo funciona la traducción en ese caso?
La razón por la que se obtiene que AttributeError
es que def test
redefine la test
en el ámbito de la clase. Las definiciones de funciones en las clases no son de ninguna manera especiales.
Tu ejemplo funcionaría así.
class SomeObject(object): def get_test(self): return "some value" def set_test(self, value): print(value) test = property(get_test) test = test.setter(set_test) # OR test = property(get_test, set_test)