先定義一個溫度類,然後定義兩個描述符類用于描述攝氏度和華氏度兩個屬性。
要求兩個屬性會自動進行轉換,也就是說你可以給攝氏度這個屬性指派,然後列印的華氏度屬性是自動轉換後的結果
class Temperature:
cel = Celsius()
fah = Fahrenheit()
class Celsius:
def __init__(self,value = 26.0):
self.value = float(value)
def __get__(self,instance,owner):
return self.value
def __set__(self,instance,value):
self.value = float(value)
class Fahrenheit:
def __get__(self.instance,owner):
return instance.cel * 1.8 +32
def __set__(self,instance,value):
instance.cel = (float(value)-32)/1.8
運作結果
>>>c = Temperature()
>>>c.cel
26.0
>>>c.fah
78.80000000000001
>>>c.cel = 30
>>>c.fah
86.0
>>>c.fah = 100
>>>c.cel
37.77777777777778