我有一个Flask项目(Python 3.6)我正在玩并遇到通过API GET提取数据并在将数据传递到前端之前向数据添加其他值的问题。
我已经在类PortfolioPerf中使用以下内容创建了一个单独的模块来执行此工作,并且我无法使其正常工作。
class PortfolioPerf(object):
def stock_quantity(self, portfolio, stock):
# Load portfolio
portload = self.portfolio_read(portfolio)
# Total of each crypto owned
holdings = {name: 0 for name in stock}
for s in portload:
holdings[s['symbol']] += s['amount']
return holdings
def portfolio_add_perf(self, portfolio, stock, stock_url):
# Add total amount owned to my_data
total_stock = self.stock_quantity(portfolio, stock)
for k, v in total_stock.items():
my_data['RAW'][k]['USD']['AmountOwned'] = v
return my_data
我在我的烧瓶应用程序中调用了class和portfolio_add_perf方法
portfolio = './portfolio.json'
stock = ['CSCO', 'IBM', 'NVDA']
stock_url = "https://urltostockdata.blah"
@app.route('/')
def home():
p = PortfolioPerf()
stock_data = p.portfolio_add_perf(portfolio, stock, stock_url)
投资组合,股票和stock_url也在这里定义。当我运行这个时,我得到以下错误。
File "/app/PortfolioPerf.py", line 43, in stock_quantity
holdings = {name: 0 for name in stock}
TfypeError: 'function' object is not iterable
我不知道为什么这种方法存在库存问题。我甚至试图在方法中定义一个新的变量来使用它,但这样做也是如此。
有什么想法吗?
答案 0 :(得分:0)
希望这不仅仅是一个错字。你得到这个错误,因为stock
(很可能)是一个返回像list或tuple这样的序列的函数。将通话更改为:
holdings = {name: 0 for name in stock()}
它应该有用。