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=[]

调用全局函数首先执行所有全局代码,然后执行该函数

要解决此问题,您可以:

  • 将该列表作为实例变量编写一个类,并在主代码中实例化它
  • 编写该类,并将该列表用作类变量,使该方法成为静态的
  • 在主代码中定义gobal变量,并将其作为参数传递给函数

  • 主代码是通过调用方法和实例化类来控制程序流的顶级代码。

    是类的一部分吗?那在哪里?如果是这种情况,您可能只想通过使用
    self.historical\u price
    historical\u price
    与实例关联。不确定这是否是你的问题所在…请澄清你所说的重置是什么意思?你是说它是空的吗?如果数据是类实例,那么add_price函数是否应该没有
    self
    属性?在我看来,
    historical\u price
    应该是
    self.historical\u price=[]
    并且应该相应地修改函数。请显示更多代码,现在甚至没有类定义。特别是,如何调用此代码?我们不能从这里复制错误。你们怎么知道它被重置了?对不起,伙计们,我显然是指模块而不是类。我总是把他们弄糊涂@PeterWoodI imagine
    data
    是一个模块名,
    data.py
    .OP明确表示它们混淆了。抱歉,伙计们,这是一个模块。我总是把类和模块弄糊涂了。在这种情况下,你应该考虑在数据模块内创建一个数据类,并使用它(也许不是用这些名称精确地)。否则,您将不得不使您的
    历史\u价格
    变量成为全局变量,我相信。@wilbur我尝试过全局变量,但无法使其正常工作。创建一个类可能会解决这个问题,但是为无法传输到现实世界的东西创建一个类不是很荒谬吗?