簡體   English   中英

Python屬性不符合預期

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

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