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

2024-06-16 09:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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只有一个数据。你知道吗

请帮忙,提前谢谢

EDIT1:软件说明:我拿了一个.txt文件,里面写满了某一年的股票价格,每只股票每天有一个价格,所以我的想法是创建一个股票列表,每只股票都有一个按天计算的价格列表,我的问题是,我只使用了一天的数值来测试,每只股票最后都有成倍的输入价值观。我已经打印了mem-address,以查看locate-wich变量是导致问题的原因,因为它是for循环,所以每次迭代和库存温度库存值没有改变


Tags: nameselfdateinitdefstockcodecurrency
1条回答
网友
1楼 · 发布于 2024-06-16 09:47:14

感谢@jasonharper的回答,问题是我的stockValues变量是一个class属性(所有类实例的值相同)而不是instance属性。 固定代码:

class Stock:

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

相关问题 更多 >