Python教程

python @properity的应用

本文主要是介绍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
请按任意键继续. . .

 

这篇关于python @properity的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!