描述器學習小結

描述器

描述器是一個類,這個類實現了__get____set____delete__方法的類,其作用就是可以將一個類以變量的形式調用,看例子:

class WebFramework(object):
    def __init__(self, name='Flask'):
        self.name = name

    def __get__(self, instance, owner):
        return self.name

    def __set__(self, instance, value):
        self.name = value

class PythonSite(object):

    webframework = WebFramework()

這是在網上找的一個例子,可以看出WebFramework是一個描述器,在PythonSite中,我們創建了一個WebFramework的實例,然後我們來看看如何使用描述器:

In [1]: PythonSite.webframework
Out[1]: 'Flask'

In [2]: PythonSite.webframework = 'Tornado'

In [3]: PythonSite.webframework
Out[3]: 'Tornado'

可以看出,webframework就如同PythonSite的一個變量一樣,賦值取值都是類似變量類似,在獲取值的時候調用描述器類的__get__函數,在賦值時調用__set__函數,這就是目前我理解的描述器的作用:將一個類包裝爲一個變量來使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章