贴一张小甲鱼的demo图:
这里是要利用python中的property来实现的,刚开始我写的是这样的:
class Sheshi:
def __get__(self, instance, owner):
return (instance.huashi - 32) / 1.8
pass
class Huashi:
def __get__(self, instance, owner):
return instance.sheshi * 1.8 + 32
pass
class Templature:
sheshi = Sheshi()
huashi = Huashi()
pass
但是运行有点问题:
框框里面答案不对,我想了很久也不知道为啥
害,换成小甲鱼版的吧:
class Sheshi:
pass
class Huashi:
def __get__(self, instance, owner):
return instance.sheshi * 1.8 + 32
def __set__(self, instance, value):
instance.sheshi = (value - 32) / 1.8
pass
class Templature:
sheshi = Sheshi()
huashi = Huashi()
pass
果然结果都是正常的……
利用property,t.sheshi设置了摄氏度之后,再调用t.huashi获得华氏度的时候,python就转去调用了Huashi类中的get方法,并且自动利用已经设置好的摄氏度转成了华氏度。
而用t.huashi设置华氏度的之后,python转去调用Huashi类中的set方法,用传入的值将摄氏度转好了,这样t.sheshi获取的就是自动转好的摄氏度了
的确很高明