Był to piękny sposób na porządkowanie właściwości klasy w ramach jednej funkcji, za pomocą zastosowania dekorator.Wycofanie zastosowania dekoratora
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())
Ale teraz zastosowanie jest przestarzałe.
Czy istnieje możliwość, aby osiągnąć taką prostotę i czytelność dla nieruchomości, z nowym, przyszedł zamiast „rozszerzona składnia wywołania”?
Moje podejście jest takie same jak Anurag, ale, nie mam teraz czarownica z nich jest lepszy, proszę spojrzeć:
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()
Nie wiedziałem tego i bardzo mi się to podoba. Magia "stosuj" powyżej była tak nieczytelna, że nie bardzo wiedziałem, o co chodzi. Wiedziałem @property i używać go dużo, ale .setter i .deleter są dla mnie nowe i wygląd (kod samodokumentujące) wielki :) –
Brakuje siebie w argumentach do getter, nie? –
@David: poprawny, poprawiony, ta. – bobince