通过使用apply decorator,有一种漂亮的方法可以在一个函数的框架中组织类属性。
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())
但现在申请已被弃用。
是否有可能实现属性的这种简单性和可读性,使用new,而不是“扩展调用语法”?
我的方法与Anurag的方法相同,但是,我现在不会更好,请看:
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()
答案 0 :(得分:12)
是否有可能实现财产的这种简单性和可读性
新的Python 2.6方式是:
@property
def myattr(self):
"""This is the doc string."""
return self._half * 2
@myattr.setter
def myattr(self, value):
self._half = value / 2
@myattr.deleter
def myattr(self):
del self._half
答案 1 :(得分:2)
:)这是一个聪明的申请用户,虽然我不确定是否有任何陷阱?
无论如何你可以这样做
class Example(object):
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())
myattr = myattr()
答案 2 :(得分:0)
你总是可以写自己的:
def apply(f, a):
return f(*a)
但是,我不太确定我看到以这种方式使用apply
作为装饰器的好处。用例是什么?