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