Python-list在我更新它时重置
我试图将数据追加到列表中,但在追加新值之前,列表似乎会重置。以下是相关代码: 这是主要模块:Python-list在我更新它时重置,python,list,reset,Python,List,Reset,我试图将数据追加到列表中,但在追加新值之前,列表似乎会重置。以下是相关代码: 这是主要模块: def update(): global url data.add_price(df.pulldata(url)) 这是数据模块: historical_price = [] def add_price(price): historical_price.append(price) print(historical_price) 我猜问题在于我将历史价格定义为顶部为空
def update():
global url
data.add_price(df.pulldata(url))
这是数据模块:
historical_price = []
def add_price(price):
historical_price.append(price)
print(historical_price)
我猜问题在于我将历史价格定义为顶部为空。然而,这让我感到困惑,因为整个脚本从未运行过。我该如何着手解决这个问题?非常感谢您的提示。您从未实例化过数据类,因此它在没有实例的情况下执行
add\u price
。您应该将self
作为参数添加到add\u price
中,并且应该像这样实例化您的数据类
d = data()
def update():
global url
d.add_price(df.pulldata(url))
class data:
def __init__(self):
self.historical_price = []
def add_price(self, price):
self.historical_price.append(price)
print(self.historical_price)
您还应该将historical\u price
作为数据类的一个属性,因此该数据类应该如下所示
d = data()
def update():
global url
d.add_price(df.pulldata(url))
class data:
def __init__(self):
self.historical_price = []
def add_price(self, price):
self.historical_price.append(price)
print(self.historical_price)
由于您的
add_price
函数位于不同的模块中,因此每次调用该方法时都会运行此部分historical_price=[]
调用全局函数首先执行所有全局代码,然后执行该函数
要解决此问题,您可以:
主代码是通过调用方法和实例化类来控制程序流的顶级代码。是类的一部分吗?那在哪里?如果是这种情况,您可能只想通过使用
self.historical\u price
将historical\u price
与实例关联。不确定这是否是你的问题所在…请澄清你所说的重置是什么意思?你是说它是空的吗?如果数据是类实例,那么add_price函数是否应该没有self
属性?在我看来,historical\u price
应该是self.historical\u price=[]
并且应该相应地修改函数。请显示更多代码,现在甚至没有类定义。特别是,如何调用此代码?我们不能从这里复制错误。你们怎么知道它被重置了?对不起,伙计们,我显然是指模块而不是类。我总是把他们弄糊涂@PeterWoodI imaginedata
是一个模块名,data.py
.OP明确表示它们混淆了。抱歉,伙计们,这是一个模块。我总是把类和模块弄糊涂了。在这种情况下,你应该考虑在数据模块内创建一个数据类,并使用它(也许不是用这些名称精确地)。否则,您将不得不使您的历史\u价格
变量成为全局变量,我相信。@wilbur我尝试过全局变量,但无法使其正常工作。创建一个类可能会解决这个问题,但是为无法传输到现实世界的东西创建一个类不是很荒谬吗?