【发布时间】:2018-05-18 01:42:28
【问题描述】:
我正在尝试创建一个投资组合类。我想将我的两个列表压缩到字典中,但是当我尝试将其打印出来时,它是空的(即使我的列表不是)。我错过了什么吗??
import numpy as np
class Portfolio(object):
"""description of class"""
array_of_stock_prices=[]
array_of_stock_names=[]
#create a dictionary of stocks
stocks=dict(zip(array_of_stock_names,array_of_stock_prices))
def __init__(self):
print()
def AddStock(self,stock_ticker,stock_price):
self.array_of_stock_names.append(stock_ticker)
self.array_of_stock_prices.append(stock_price)
def printObject(self):
for key,value in self.stocks.items():
print(key,value)
port1=Portfolio()
port1.AddStock('AApl',100)
port1.printObject()
【问题讨论】:
-
创建字典时,列表为空
-
你只初始化
stocks一次。 -
您的股票字典是在您调用
Addstock之前创建的,即字典是在您的列表有任何值之前创建的。您的任何函数都不会修改字典,因此它保持为空。 -
警告您的
array_of_stock_prices、`array_of_stock_names` 和stocks是类属性(在类的所有实例之间共享)。我不认为那是你想要的。 -
另外,你为什么要维护两个列表和一个字典而不是一个字典?这违反了 SPOT 规则(=>“Single Point Of Truth”)。
标签: python class dictionary