python中的局部变量保持相同的内存地址

时间:2017-09-14 13:25:34

标签: python memory stock

class StockValues:
    def __init__ (self, DD, MM, YYYY, averageValue):
        self.date = map (str, [DD, MM, YYYY])
        self.averageValue = averageValue

class Stock:
    stockValues = []

    def __init__ (self, name, code, currency):
        self.name = name
        self.code = code
        self.currency = currency

Stocks = []
for index, stock in enumerate(StocksBufferToMemory):
    #print ("{0:.0f}%".format(float(index)/len(StocksBufferToMemory) * 100))
    stockTemp = Stock (stock.name, stock.code, stock.currency)
    stockTempValues = StockValues (stock.date[0], stock.date[1], stock.date[2], stock.averageValue)
    stockTemp.stockValues.append (stockTempValues)
    Stocks.append (stockTemp)
    print (stockTempValues)

此代码在stockTemp.stockValues中创建了大量数据,而不是每个stockTemp只创建一个数据。

请提前帮助,请提供帮助

EDIT1:解释软件:我在某一年内收到一个完整的股票价格的.txt文件,每个股票每天有一个价格,所以ideia是创建一个股票清单,每个股票都有一个价格清单根据这一天,我的问题是我只使用一天的值进行测试,每个股票最终都有值的乘法条目。我打印了mem地址以查看找到导致问题的变量,因为它是for循环,它应该在每次迭代时更改memmory地址并且stockTemp.stockValues不会更改

1 个答案:

答案 0 :(得分:0)

感谢@jasonharper的答案,问题是我的stockValues变量是一个类属性(所有类实例的值相同)而不是实例属性。 代码已修复:

class Stock:

def __init__ (self, name, code, currency):
    self.name = name
    self.code = code
    self.currency = currency
    self.stockValues = []