描述器是一個類,這個類實現(xiàn)了__get__
和__set__
,__delete__
方法的類,其作用就是可以將一個類以變量的形式調(diào)用,看例子:
創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元建始做網(wǎng)站,已為上家服務(wù),為建始各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
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()
這是在網(wǎng)上找的一個例子,可以看出WebFramework是一個描述器,在PythonSite中,我們創(chuàng)建了一個WebFramework的實例,然后我們來看看如何使用描述器:
In [1]: PythonSite.webframework
Out[1]: 'Flask'
In [2]: PythonSite.webframework = 'Tornado'
In [3]: PythonSite.webframework
Out[3]: 'Tornado'
可以看出,webframework就如同PythonSite的一個變量一樣,賦值取值都是類似變量類似,在獲取值的時候調(diào)用描述器類的__get__
函數(shù),在賦值時調(diào)用__set__
函數(shù),這就是目前我理解的描述器的作用:將一個類包裝為一個變量來使用。