我正在尝试从用户那里获取一组值并打印max,min和mean值。但是我无法访问在insert()中获取的温度值(t [])。有人可以帮我吗?
我尝试将列表t作为另一个函数的参数传递,但它表示TypeError:非序列迭代
Original dataframe size 2352
Transpose dataframe size 3080
Dataframes are equals True
我应该获取每次传递的值列表的最大值,最小值和平均值
答案 0 :(得分:0)
您需要初始化您的类,以便在每个类函数中都有可用的值。这样,您可以通过引用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()
这样,您还可以使用值来初始化类,而不是使用insert:
def __init__(self, values):
self.temp = values
self.t.append(self.temp)
答案 1 :(得分:0)
问题出在get_max
的定义中。当您将其参数设置为t
且没有其他任何参数时,该t
就开始与您在该类中编写的其他函数中的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()