我对如何使用感兴趣@property
在Python中。我已经阅读了 python 文档,在我看来,其中的示例只是一个玩具代码:
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
我不知道包装可以带来什么好处_x
充满属性装饰器。为什么不直接实现为:
class C(object):
def __init__(self):
self.x = None
我认为,属性功能在某些情况下可能很有用。但当?有人可以给我一些现实世界的例子吗?
其他示例包括验证/过滤设置的属性(强制它们在范围内或可接受的范围内)以及复杂或快速变化的术语的惰性评估。
隐藏在属性背后的复杂计算:
class PDB_Calculator(object):
...
@property
def protein_folding_angle(self):
# number crunching, remote server calls, etc
# all results in an angle set in 'some_angle'
# It could also reference a cache, remote or otherwise,
# that holds the latest value for this angle
return some_angle
>>> f = PDB_Calculator()
>>> angle = f.protein_folding_angle
>>> angle
44.33276
验证:
class Pedometer(object)
...
@property
def stride_length(self):
return self._stride_length
@stride_length.setter
def stride_length(self, value):
if value > 10:
raise ValueError("This pedometer is based on the human stride - a stride length above 10m is not supported")
else:
self._stride_length = value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)