2 回答

TA貢獻1827條經驗 獲得超8個贊
您需要初始化您的類,以便在每個類函數中都有可用的值。這樣你就可以通過引用 self 來調用這些值:
class TempTracker:
def __init__(self):
self.t = list()
self.temp = None
def insert(self, temp):
self.temp = temp
self.t.append(self.temp)
print("test", self.t)
return self.t
def get_max(self):
for i in self.t:
print(i)
def get_min():
pass
def get_mean():
pass
def main():
a = TempTracker()
b = TempTracker()
temp = [1, 2]
a.insert(temp)
b.insert(3)
a.get_max()
這樣,您還可以使用值而不是使用插入來初始化您的類:
def __init__(self, values):
self.temp = values
self.t.append(self.temp)

TA貢獻1853條經驗 獲得超6個贊
問題在于 的定義get_max。當您將其參數設置為t,而不是其他參數時,它t開始像self您在該類中編寫的其他函數一樣工作。
實際上,self 也只是一個標識符而已。因此,當您嘗試調用時a.get_max(),您將TempTracker' 實例傳遞給對象屬性get_max,然后它將嘗試迭代對象本身,這是不可能的,因為它不是迭代器。
你可能做了什么: -
class TempTracker:
t = [] # moved t outside the insert's scope to prevent reinitialization
def insert(self, temp):
self.temp = temp
self.t.append(self.temp)
return self.t
def get_max(self,):
for i in self.t:
print(i)
def get_min(self,):
pass
def get_mean(self,):
pass
a = TempTracker()
b = TempTracker()
temp = [1, 2]
a.insert(temp)
b.insert(3)
a.get_max()
添加回答
舉報