Había una manera hermosa de organizar la propiedad de clase en el marco de una función, mediante el uso del decorador de aplicación.obsolescencia del decorador de aplicación
class Example(object):
@apply
def myattr():
doc = """This is the doc string."""
def fget(self):
return self._half * 2
def fset(self, value):
self._half = value/2
def fdel(self):
del self._half
return property(**locals())
Pero ahora aplicar ha quedado obsoleto.
¿Hay alguna posibilidad de lograr tal simplicidad y legibilidad para la propiedad, con lo nuevo, vino en cambio la "sintaxis de llamada extendida"?
Mi enfoque es el mismo que Anurag de, pero, no ahora la bruja de uno es mejor, por favor mire:
def prop(f):
return property(**f())
class A(object):
@prop
def myattr():
def fget(self):
return self._myattr
def fset(self, value):
self._myattr = value
return locals()
No sabía esto y me gusta mucho. La magia de "aplicar" anterior era tan ilegible que no sabía muy bien de qué se trataba la pregunta. Conocí @property y lo uso mucho, pero .setter y .deleter son nuevos para mí y se ven geniales (código de auto-documentación) :) –
Te estás perdiendo de los argumentos al comprador, ¿no? –
@David: correcto, fijo, ta. – bobince