Python - 列表重置,因为我更新它

时间:2015-11-17 14:06:58

标签: 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)

我猜这个问题是我在顶部定义historical_price是空的。然而,这让我感到困惑,因为整个脚本永远不会运行。我该如何解决这个问题?提示很受欢迎。

2 个答案:

答案 0 :(得分:0)

您永远不会实例化数据类,因此它在没有实例的情况下执行add_price来执行它。您应该将self作为参数添加到add_price,并且您应该像这样实例化您的数据类。

d = data()

def update():
    global url
    d.add_price(df.pulldata(url))

您还应该使historical_price成为数据类的属性,因此数据类看起来应该是这样的。

class data:
    def __init__(self):
        self.historical_price = []

    def add_price(self, price):
        self.historical_price.append(price)
        print(self.historical_price) 

答案 1 :(得分:0)

由于您的add_price函数位于不同的模块中,因此每次调用该方法时都会运行此部分historical_price = []

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

要解决此问题,您可以:

  1. 将具有该列表的类编写为实例变量,并在主代码中实例化它。
  2. 使用list作为类变量编写该类并使方法成为静态。
  3. 在主代码中定义gobal变量,并将其作为参数传递给函数。
  4. 主代码是通过调用方法和实例化类来控制程序流的顶级代码。