Python方法TypeError:' function'对象不可迭代

时间:2018-02-14 06:16:21

标签: python flask

我有一个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

我不知道为什么这种方法存在库存问题。我甚至试图在方法中定义一个新的变量来使用它,但这样做也是如此。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

希望这不仅仅是一个错字。你得到这个错误,因为stock(很可能)是一个返回像list或tuple这样的序列的函数。将通话更改为:

holdings = {name: 0 for name in stock()}

它应该有用。