property类的使用

一、property类

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

  语法

  如下是 property() 方法的语法:函数

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

  参数

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

  返回值

  举例:spa

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)

二、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)

 三、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
相关文章
相关标签/搜索