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