簡體   English   中英

將實例附加到列表時,屬性設置器中沒有 output

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM