0
点赞
收藏
分享

微信扫一扫

python-装饰器property()函数

心存浪漫 2022-02-19 阅读 39
class C(object):
    def __init__(self):
        self._x = None
 
    def getx(self):
        return self._x
 
    def setx(self, value):
        self._x = value
 
    def delx(self):
        del self._x
c = C()
print(c.getx)
c.setx(5)
del c._x
print()

等价于

class C(object):
    def __init__(self):
        self._x = None
 
    def getx(self):
        return self._x
 
    def setx(self, value):
        self._x = value
 
    def delx(self):
        del self._x

    x = property(getx, setx, delx, "I'm the 'x' property.")

c = C()
c.x
c.x = 5
del c.x
print()

使用语法糖格式可写成右边形式在这里插入图片描述

class C(object):
    def __init__(self):
        self._x = None
 
    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x
 
    @x.setter
    def x(self, value):
        self._x = value
 
    @x.deleter
    def x(self):
        del self._x
c = C()
c.x
c.x = 5
del c.x
print()

使用装饰器可以很方便的进行创建只读属性。

class Parrot(object):
    def __init__(self):
        self._voltage = 100000
 
    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

p = Parrot()
print(p.voltage)
举报

相关推荐

0 条评论