【发布时间】:2014-03-22 00:44:29
【问题描述】:
加快学习课程的进度。我一直在阅读构造函数(Python中的def init)应该只设置分配的变量,计算的实例属性应该通过属性设置。此外,使用 @property 优于 Java 风格的 getter/setter。
好的,但是我见过的每个例子都只设置一个属性。假设我有一个具有三个复杂属性的对象,需要计算、查询等。你如何表示多个 @property getters、setters、deleters强>?这是另一个post的例子:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
所以如果我有三个实例变量是根据其他一些属性计算出来的值,它会不会是这样的
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
@property
def y(self):
"""I'm the 'y' property."""
return self._y
@y.setter
def y(self, value):
self._y = value
@y.deleter
def y(self):
del self._y
@property
def z(self):
"""I'm the 'z' property."""
return self._z
@z.setter
def z(self, value):
self._z = value
@z.deleter
def z(self):
del self._z
或者,我只看到一个 @property 声明这一事实是否意味着拥有一个包含多个 @property 的类是个坏主意?
【问题讨论】:
标签: python class properties decorator python-decorators