装饰器property 为了把媳妇藏起来

class C(object):
    """
    为了不让用户直接访问属性,让他设置为私密的,然后让property去搞
    """
    def __init__(self):
        self._x = None

    @property
    def x(self):
        print("property")
        return self._x

    @x.setter
    def x(self, value):
        print("set")
        self._x = value

    @x.deleter
    def x(self):
        print("del")
        del self._x

c = C()
c.x   # property
c.x = "李哈哈"  # setter
del c.x  # deleter


"""
这三个是兄弟三个,一起用一起写,你如果只需要获取,那property就足够了,如果你想赋值和删除,但是没有下面的装饰器,就会报错。
@property :(相当于getattr的功能) 把 类函数 变成 类属性(此时属性类型为NoneType) 最终效果:调用这个属性 就会执行函数内部代码 @类函数.setter 给这个类属性赋值的时候触发函数内部代码 @类函数.deleter 删除这个类属性的时候触发函数内部代码 """

 

posted @ 2020-09-01 21:58    阅读(86)  评论(0编辑  收藏  举报