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