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:同理