Был прекрасный способ организовать свойство класса в рамках одной функции, используя декоратор применения.
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())
Но теперь применение устарело.
Есть ли возможность достичь такой простоты и удобочитаемости для свойства, с новым, пришедшим вместо «расширенного синтаксиса вызова»?
Мой подход такой же, как у Анурага, но сейчас я не считаю, что лучше, пожалуйста, посмотрите:
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()