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
相關文章
相關標籤/搜索