@proerty 有两种方式
方式1
把一个getter方法变成属性,只需要加上@property
就可以了,此时,@property
本身又创建了另一个装饰器@xxxx.setter
,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作
class Screen(object):
@property
def width(self):
return self._width
@width.setter
def width(self,value):
self._width = value
@property
def height(self):
return self._height
@height.setter
def height(self,value):
self._height = value
@property
def resolution(self):
return self._width * self._height
s = Screen()
s.width = 100
s.height = 100
print('resolution = ',s.resolution)
方式二:
class Test(object):
def __init__(self):
self.__num = 100
def setNum(self,newNum):
self.__num = newNum
def getNum(self):
return self.__num
num = property(getNum,setNum)
t = Test()
t.num = 200 #相当于调用了 t.setNum(200)
print t.num