Python内置的@property
装饰器就是负责把一个方法变成属性调用的:
class Screen(object):
def isint(self,px):
if not isinstance(px,int):
raise ValueError('px must be an int')
if px<0 :
raise ValueError('px must be not a negative number')
@property
def width(self):
return self._width
@width.setter
def width(self,value):
self.isint(value)
self._width=value
@property
def height(self):
return self._height
@height.setter
def height(self,value):
self.isint(value)
self._height=value
@property
def resolution(self):
return self._width * self._height
@property给一个Screen
对象加上width
和height
属性,以及一个只读属性resolution
:
>>> s=Screen()
>>> s.width=666
>>> s.height=888
>>> print(s.resolution)
591408
>>> print('s.width * s.height =%d? ' % s.resolution)
s.width * s.height =591408?
>>> print('s.width * s.height =%d ' % s.resolution)
s.width * s.height =591408
>>>