почему оператор преобразования получает вызов, когда возвращается std :: for_each ()?

NoneType object has no attribute ... означает, что у вас есть объект None, и вы пытаетесь использовать атрибут этого объекта.

В вашем случае вы делаете q.get(...), поэтому q должен быть None. Поскольку q является результатом вызова nse.get_quote(...), эта функция должна иметь возможность возврата None. Вам нужно будет настроить свой код для учета этой возможности, например, проверить результат, прежде чем пытаться его использовать:

q = nse.get_quote(stock)
if q is not None:
    print ...

Корень проблемы, скорее всего, в том, как вы читаете файл , stock будет включать в себя новую строку, поэтому вы должны отключить это перед вызовом nse.get_quote:

q = nse.get_quote(stock.strip())
2
задан kadina 13 July 2018 в 19:27
поделиться

1 ответ

Вы не передаете функцию std::for_each, вы передаете функтор (объект, который действует как функция). Когда возвращается std::for_each, возвращается объект функции, который вы передали. Объект функции имеет тип CalculateAverage, но вы пытаетесь присвоить его int. Таким образом, оператор преобразования выбран для преобразования возвращенного CalculateAverage в double, а затем используется для инициализации average.

6
ответ дан NathanOliver 17 August 2018 в 12:11
поделиться