簡體   English   中英

Python TypeError: 'int' object 在 OOP 中不可調用

[英]Python TypeError: 'int' object is not callable in OOP

我有個問題。 我了解到在setters中使用設置器。 我在這里有一些代碼,我嘗試使用方法measure_set不起作用,因為我有一個TypeError: 'int' object is not callable 有人可以解釋一下為什么會這樣嗎? 我試圖找到解決方案,但我沒有在 OOP 中使用 setter 找到類似的問題。 感謝,並有一個愉快的一天。

class Sensor:
    def __init__(self, location, _measurement = 0, _precision = float('inf'), _unit = 'N/A'):
        self._measurement = _measurement
        self._precision = _precision
        self._unit = _unit
        self.location = location
        self.log = []

    @property
    def log_average(self):
        return sum(self.log)/len(self.log)

    @property
    def measurement(self):
        return self._measurement

    @measurement.setter
    def measure_set(self, measure):
        self._measurement = measure
        self.log.append(self._measurement)

    @property
    def description(self):
        return f'{self._measurement} +/- {self._unit}'

if __name__ == '__main__':
    s = Sensor('Ostatni Grosz')
    print(s.description)
    s.measure_set(10)
    s.measure_set(20)
    print(s.log)
    print(s.log_average)

設置器的名稱應與屬性的名稱匹配。

@measurement.setter
def measurement(self, measure):
    self._measurement = measure
    self.log.append(self._measurement)

因為measurement.setter返回的property實例被賦予了名稱measurement 使用您的代碼,您現在有兩個單獨的屬性,一個(只讀)屬性名為measurement_set measurement

setter 並不意味着直接調用(也不能,因為名稱不再指代可調用的 object,而是指屬性)。 當您編寫self.measurement_set(10)時,屬性訪問self.measurement_set返回(通過 getter) self._measurement的當前int值,然后嘗試使用參數 10 調用它。

相反,您只需直接分配給屬性,這會觸發 setter 的調用。

s.measurement = 10
s.measurement = 20 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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