[英]No output from property setter when appending instance to list
當我發現屬性設置器中的打印語句並不總是完成它的工作時,我只是在試驗屬性裝飾器,所有其他條件都相同。 在下面的示例中,我從直接初始化的 class 實例( fiver
部分)獲得了預期的 output,但在將實例附加到列表( objlist
部分)時卻沒有。 Python 3.5.3
class Celsius:
def __init__(self,temperature=0):
self._temperature=temperature
@property
def temperature(self):
print("Getting value...")
return self._temperature
@temperature.setter
def temperature(self, value):
print("Guess, you know what you're doing...")
if value < -273:
print ("Impossible temperature...")
self._temperature = -273
else:
self._temperature = value
objlist=[]
objlist.append(Celsius(4))
objlist.append(Celsius(-499))
fiver=Celsius(5)
print (fiver.temperature)
fiver.temperature=-408
print (fiver.temperature)
在您的__init__
中,您直接設置“內部”值_temperature
。 這不會調用setter
,因為property.setter
是在temperature
上定義的。
如果您希望__init__
也通過setter
驗證,聽起來很有趣,只需使用setter
:
def __init__(self,temperature=0):
self.temperature = temperature
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.