当我使用导入的包时,我使用它给我的对象。我发现它有一个next
方法,所以我只是尝试使用next()
内置函数来生成它的下一项,但是出了点问题。我想知道Object的内置方法是什么,我以前从未见过它。我正在使用python 2.7.12
谢谢!
答案 0 :(得分:0)
next()
内置函数的表现非常好。虽然Reader()
似乎确实有next()
方法,但却缺少另一种重要方法。 next()
内置函数需要一个迭代器对象,这就是引发TypeError
的原因。
如果要以迭代器的方式使用类,则至少需要两种方法:
__iter__()
用于呼叫next()
。next()
(在Python 3中更改为__next__
)返回迭代器中的下一个项目。 Python 2.7 documentations definition for next()
can help confirm this:
通过调用其
next()
方法从迭代器中检索下一个项目。如果给定default,则在迭代器耗尽时返回,否则引发StopIteration。
最可能的情况是Reader
类没有实现__iter__()
方法,这意味着无法调用next()
方法。
答案 1 :(得分:0)
看起来您正在使用Pcapy Reader
个对象。虽然这个对象有一个名为next
的方法,但它不是一个迭代器,也不支持迭代。
通常,这没关系,next
内置函数会看到next
方法并调用它,但是Reader
是用C语言编写的。 C必须在表示类型的C结构中提供tp_iternext
函数,而不仅仅是next
方法,才能被识别为迭代器,并且此类型将tp_iternext
设置为0。