[英]Python property does not behave as expected
我在下面的網站上瀏覽解釋和示例:
http://www.programiz.com/python-programming/property
而且,當我嘗試該代碼時,該代碼的行為似乎不符合預期。 因此,我嘗試執行以下操作:
class Celsius:
def __init__(self, temperature = 0):
self.temperature = temperature
def to_fahrenheit(self):
return (self.temperature * 1.8) + 32
def get_temperature(self):
print("Getting value")
return self._temperature
def set_temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is not possible")
print("Setting value")
self._temperature = value
temperature = property(get_temperature,set_temperature)
c = Celsius()
我希望輸出結果如上述站點中所述:
Setting value #That means that "set_temperature" was called by the constructor when the object is being created
但是我根本沒有輸出。 該程序運行無錯誤,但屏幕保持空白。 我做錯什么了嗎?
屬性僅適用於新式類。 您的Celsius
類需要從object
繼承。
還要注意,如今將屬性寫為裝飾器是更加慣用的:
class Celsius(object):
def __init__(self, temperature = 0):
self.temperature = temperature
def to_fahrenheit(self):
return (self.temperature * 1.8) + 32
@property
def temperature(self):
print("Getting value")
return self._temperature
@temperature.setter
def set_temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is not possible")
print("Setting value")
self._temperature = value
默認情況下,Python 2.7仍使用“舊類”。 如果您使用以下方法創建新樣式的類,則該示例有效:
class Celsius(object):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.