property类的使用

1、property类

  property() 函数的作用是在新式类中返回属性值。

  语法

  以下是 property() 方法的语法:

  class property([fget[, fset[, fdel[, doc]]]])

  参数

  • fget -- 获取属性值的函数
  • fset -- 设置属性值的函数
  • fdel -- 删除属性值函数
  • doc -- 属性描述信息

  返回值

  举例:

class Foo(object):
    debug = False

    def get(self):
        return self.debug

    def set(self,value):
        self.debug = value

    d = property(get,set)
    del get
    del set

obj = Foo()
# 输出:False 
print(obj.d)
obj.d = True
# 输出:True
print(obj.d)

2、property 的 getter,setter 和 deleter 方法同样可以用作装饰器

class Foo(object):
    debug = False

    @property
    def data(self):
        return self.debug

    @data.setter
    def data(self,value):
        self.debug = value

    @data.deleter
    def data(self):
        del self.debug

obj = Foo()
# 输出:False
print(obj.data)
obj.data = True
# 输出:True
print(obj.data)

 3、Flask中源码

class Flask(_PackageBoundObject):
    def _get_debug(self):
        return self.config['DEBUG']

    def _set_debug(self, value):
        self.config['DEBUG'] = value
        self.jinja_env.auto_reload = self.templates_auto_reload
		
    debug = property(_get_debug, _set_debug)
    del _get_debug, _set_debug

  

 

posted @ 2018-12-04 09:58  RobotsRising  阅读(618)  评论(0编辑  收藏  举报