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