您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Python魔法方法之描述符類的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
描述符類要求:
描述符就是將某種特殊類型的類的實(shí)例指派給另一個(gè)類的屬性
至少要實(shí)現(xiàn)以下的一個(gè)方法:
?__get__(self, instance, owner) –用于訪問屬性,它返回屬性的值 ?__set__(self, instance, value) –將在屬性分配操作中調(diào)用,不返回任何內(nèi)容 ?__delete__(self, instance) –控制刪除操作,不返回任何內(nèi)容
eg:
>>> class MyDecriptor: def __get__(self,instance,owner): print("getting...",self,instance,owner) def __set__(self,instance,value): print("setting...",self,instance,value) def __delete__(self,instance): print("deleting...",self,instance) >>> class Test: x = MyDecriptor() #取Mydecriptor類的實(shí)例指派給Test類的屬性x
測(cè)試:
eg:
>>> class MyProperty: def __init__(self,fget = None,fset = None,fdel = None): self.fget = fget self.fset = fset self.fdel = fdel def __get__(self,instance,owner): return self.fget(instance) def __set__(self,instance,value): self.fset(instance,value) def __delete__(self,instance): self.fdel(instance) >>> class C: def __init__(self): self._x = None def getX(self): return self._x def setX(self,value): self._x = value def delX(self): del self._x x = MyProperty(getX,setX,delX) >>> c = C() >>> c.x = "HELLOW" >>> c.x 'HELLOW' >>> c._x 'HELLOW' >>> del c.x >>> c._x
eg:
攝氏度轉(zhuǎn)華氏度:華氏度=攝氏度*1.8+32
要求:
?先定義一個(gè)溫度類,然后定義兩個(gè)描述符類用于描述攝氏度和華氏度兩個(gè)屬性。
?要求兩個(gè)屬性會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換,也就是說你可以給攝氏度這個(gè)屬性賦值,然后打印的華氏度屬性是自動(dòng)轉(zhuǎn)換后的結(jié)果。
ss Celsius: #攝氏度描述符類 def __init__(self,value = 26.0):#self為描述符類自身(此為攝氏度描述符類)的實(shí)例(此為cel) self.value = float(value) def __get__(self,instance,owner):#instance是這個(gè)描述符的擁有者所在的類的實(shí)例(此為temp) return self.value def __set__(self,instance,value):#owner是這個(gè)描述符的擁有者所在的類本身(此為溫度類) self.value = float(value) class Fahrenheit: #華氏度描述符類 def __get__(self,instance,owner): return instance.cel * 1.8 +32 #攝氏度轉(zhuǎn)華氏度 def __set__(self,instance,value): instance.cel = ((float)(value)- 32)/ 1.8 ## instance.cel 則會(huì)執(zhí)行Temperature.cel,接著執(zhí)行Celsius類中的__set__方法 class Temperature: #溫度類 cel = Celsius() #設(shè)置攝氏度屬性(描述符類的實(shí)例指派給了溫度類的屬性) fah = Fahrenheit()# temp.fah ,當(dāng)屬性fah被賦值的時(shí)候,則會(huì)執(zhí)行Fahrenheit描述符類的__set__方法 >>> temp = Temperature() >>> temp.cel 26.0 >>> temp.fah 78.80000000000001 >>> temp.fah = 78.8 >>> temp.cel 25.999999999999996
python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
感謝各位的閱讀!關(guān)于“Python魔法方法之描述符類的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。