Локальная переменная в 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.stockValues, а не только по одному на stockTemp.
Пожалуйста, помогите, спасибо заранее
РЕДАКТИРОВАТЬ 1: Объяснение программного обеспечения: Я беру.txt файлы, полные цен акций в течение определенного года, каждая акция имеет одну цену в день, поэтому идея состоит в том, чтобы создать список акций, и каждая акция имеет список цен в соответствии с день, моя проблема в том, что я использую только один день значений для тестирования, и каждая акция заканчивается умножением записей для значений. Я напечатал адрес mem, чтобы увидеть, что переменная locate вызывает проблему, так как это цикл for, он должен менять адрес памяти каждый раз, когда он повторяется, а stockTemp.stockValues не меняется
1 ответ
Спасибо @jasonharper за ответ, проблема в том, что моя переменная stockValues является атрибутом класса (одинаковое значение для всех экземпляров класса) вместо атрибута экземпляра. Код исправлен:
class Stock:
def __init__ (self, name, code, currency):
self.name = name
self.code = code
self.currency = currency
self.stockValues = []