天天看點

python(property+描述符)

先定義一個溫度類,然後定義兩個描述符類用于描述攝氏度和華氏度兩個屬性。

要求兩個屬性會自動進行轉換,也就是說你可以給攝氏度這個屬性指派,然後列印的華氏度屬性是自動轉換後的結果

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
           

繼續閱讀