python @properity的应用

class Cell:
    #使用@property修饰方法,相当于为改属性设置getter方法
    @property
    def state(self):
        return self._state
    #为state属性设置setter方法,这样state属性就变成了读写属性
    @state.setter
    def state(self,value):
        if 'alive' in value.lower():
            self._state = 'alive'
        else:
            self._state = 'dead'
    #使用@property修饰方法is_dead,is_dead()就变成了只读属性
    @property
    def is_dead(self):
        return not self._state.lower() == "alive"

c = Cell()
c.state = 'Al'
print(c.state)
print(c.is_dead)
dead
True
请按任意键继续. . .
class Cell:
    #使用@property修饰方法,相当于为改属性设置getter方法
    @property
    def state(self):
        return self._state
    #为state属性设置setter方法,这样state属性就变成了读写属性
    @state.setter
    def state(self,value):
        if 'alive' in value.lower():
            self._state = 'alive'
        else:
            self._state = 'dead'
    #使用@property修饰方法is_dead,is_dead()就变成了只读属性
    @property
    def is_dead(self):
        return not self._state.lower() == "alive"

c = Cell()
c.state = 'Alive'
print(c.state)
print(c.is_dead)
alive
False
请按任意键继续. . .

properity()函数的使用格式如下:

properity(fget=None, fset=None, fdel=None, doc=None)

从上面的语法可以看出来,使用property函数的时候可以传入4个参数,但是也可以根据需要传入参数

class Rectangle:
    def __init__(self,width,height):
        self.width = width
        self.height = height
    def setsize(self,size):
        self.width , self.height = size
    def getsize(self):
        return self.width,self.height
    def delsize(self):
        self.width, self.height = 0,0

    size = property(getsize,setsize,delsize,"用于描述矩形大小的属性")

#访问size属性的说明文档
print(Rectangle.size.__doc__)

#通过内置的help函数来访问size属性的说明文档
help(Rectangle.size)

rect = Rectangle(3,4)
print(rect.size)#3,4

rect.size = 33,44
print(rect.width)#3
print(rect.height)#4

del rect.size

print(rect.width)#0
print(rect.height)#0
用于描述矩形大小的属性
Help on property:

    用于描述矩形大小的属性

(3, 4)
33
44
0
0
请按任意键继续. . .
原文地址:https://www.cnblogs.com/shunguo/p/15706383.html