前言
property提供了一个内置的描述符类型,其作用是将一个属性链接到一组方法上(也就是将一个类方法作为一个类属性来用)。
property接受4个可选参数:fget、fset、fdel和doc(这四个参数可以不同时传入)。最后一个参数可以用来定义一个链接到属性的docstring(docstring是对链接到方法的属性的描述)。
代码
下面我们来构建一个Rectangle类,其控制方法有两种,一种是直接访问保存两个顶点的属性,另一种是调用width和height。
class Rectangle:
def __init__(self, x1, y1, x2, y2):
self.x1, self.y1 = x1, y1
self.x2, self.y2 = x2, y2
def _width_get(self):
return self.x2 - self.x1
def _width_set(self, value):
self.x2 = self.x1 + value
def _height_get(self):
return self.y2 - self.y1
def _height_set(self, value):
self.y2 = self.y1 + value
width = property(
_width_get, _width_set,
doc="rectangle width measured from left"
)
height = property(
_height_get, _height_set,
doc="rectangle height measured from top"
)
def __repr__