python描述符練習:實現華氏度和攝氏度轉換

class CelDeg:
    
    def __init__(self, val=26.0):
        self.val = val
        
    def __get__(self, instance, owner):
        return self.val

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

class FahDeg:
    
    def __get__(self, instance, owner):
        return instance.cel* 1.8 + 32
    
    def __set__(self, instance, value):
        instance.cel = (value - 32) / 1.8


class Temprature:
    fah = FahDeg()
    cel = CelDeg()

在這裏插入圖片描述
結果1:
第一句:生成一個Temprature實例t,同時t下由兩個屬性fah和cel
第二句:當給Temprature實例t中華氏度fah屬性賦值時,會自動調用FahDeg類中__set__(self, instance, value)魔法方法, 其中語句instance.cel = (value - 32) / 1.8 ,(instance表示t)將t中屬性cel進行運算.
第三句:訪問t的cel屬性,會自動調用類CelDeg中魔法方法__get__(self, instance, owner),其語句return self.val會將第二步中__set__設置的val值返回.


在這裏插入圖片描述
結果2:同理

發佈了8 篇原創文章 · 獲贊 6 · 訪問量 1147
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章