Discuss / Python / 我是不是可以理解为:@property是get a __value; @name.setter是set a __value?

我是不是可以理解为:@property是get a __value; @name.setter是set a __value?

Topic source

夏蝉live

#1 Created at ... [Delete] [Delete and Lock User]
#coding=utf-8
# @property装饰器就是负责把一个方法变成属性调用
class Screen(object):

    def __init__(self):
        self.__height = 0
        self.__width = 0
        self.__resolution = 0

    @property
    def height(self): return self.__height
    @property
    def width(self): return self.__width
    @property
    def resolution(self): return self.__resolution
    @height.setter
    def height(self,value):
        if not isinstance(value,int): raise ValueError('height must be an integer!')
        self.__height = value
        self.__resolution = self.__height * self.__width
    @width.setter
    def width(self,value):
        if not isinstance(value,int): raise ValueError('width must be an integer!')
        self.__width = value
        self.__resolution = self.__height * self.__width
    @resolution.setter
    def resolution(self,value): raise SyntaxError('resolution is onlyread!')

s = Screen()
s.width = 1024
s.height = 768
print(s.width,s.height,s.resolution)
assert s.resolution == 786432, '1024 * 768 = %d ?' % s.resolution

  • 1

Reply