6、合成属性
说明:使用 property(fget=Nnone, fset=None, fdel=Nnone, doc=None) 合成属性相于实例变量。
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def getarea(self):
print('getarea方法')
return self.width*self.height
# 合成一个矩形面积的属性
area = property(fget=getarea, doc='矩形面积的属性')
def getsize(self):
print('getsize方法')
return self.width, self.height
def setsize(self, size):
print('setsize方法')
self.width = size[0]
self.height = size[1]
# 合成一个矩形大小的属性
size = property(fget=getsize, fset=setsize, doc='矩形大小的属性')
r = Rectangle(30, 40)
print(r.area) # 访问 area 属性(实际上调用 getarea 方法)
getarea方法
1200
print(r.size) # 访问 size 属性(实际上调用 getsize 方法)
print('-'*30)
r.size = (5, 6) # 对 size 赋值(实际上调用 setsize 方法)
print('-'*30)
print(r.size) # 改变后的 size 属性
getsize方法
(30, 40)
------------------------------
setsize方法
------------------------------
getsize方法
(5, 6)