Как сказал @Robin Zigmond в комментарии, вы пытаетесь вызвать список, как если бы вы вызывали функцию, используя синтаксис (...)
.Следующее:
>>> def f(x): return 2*x
...
>>> f(2)
4
отличается от:
>>> L=[1,2,3]
>>> L(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
Последнее не работает, поскольку [1,2,3]
не вызывается. Документация Python перечисляет вызываемые типы:
- Пользовательские функции
- Методы экземпляра
- Функции генератора
- Функции сопрограмм
- Функции асинхронного генератора
- Встроенные функции
- Встроенные методы
- Классы
- Экземпляры классов: Экземплярыпроизвольные классы могут быть вызваны путем определения метода
__call__()
в их классе.
Список (то есть экземпляр list
) не является ни одним из них, поскольку класс list
не имеет __call__() method
:
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
В вашем примере первые строки утверждают, что plottest
является итеративным.Ошибка показывает, что это список.И вы пытаетесь назвать это с index = plottest(doc)
.Я предполагаю, что вы хотите получить индекс doc
в plottest
.Чтобы достичь этого в Python, вы можете написать:
for index, doc in enumerate(plottest):
...
Надеюсь, это поможет!