Python 内置的下一个方法表现得很奇怪

Python 内置的下一个方法表现得很奇怪,python,python-2.7,oop,pcap,Python,Python 2.7,Oop,Pcap,当我使用导入的包时,我使用它提供给我的对象。我发现它有一个next方法,所以我只是尝试使用next内置函数来生成它的下一项,但有点不对劲。我想知道对象的内置方法是什么,我以前从未见过它。我使用的是python 2.7.12 谢谢大家! 下一个内置函数的性能非常好。虽然读者似乎有下一个方法,但它缺少了另一个重要的方法。下一个内置函数需要迭代器对象,这就是引发TypeError的原因 如果类要以迭代器的方式使用,它至少需要两种方法: __用于调用next的iter。 在Python3中,nextCh

当我使用导入的包时,我使用它提供给我的对象。我发现它有一个next方法,所以我只是尝试使用next内置函数来生成它的下一项,但有点不对劲。我想知道对象的内置方法是什么,我以前从未见过它。我使用的是python 2.7.12 谢谢大家!

下一个内置函数的性能非常好。虽然读者似乎有下一个方法,但它缺少了另一个重要的方法。下一个内置函数需要迭代器对象,这就是引发TypeError的原因

如果类要以迭代器的方式使用,它至少需要两种方法:

__用于调用next的iter。 在Python3中,nextChanged为uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。 委员会:

通过调用迭代器的next方法从迭代器中检索下一项。如果给定默认值,则在迭代器耗尽时返回,否则将引发StopIteration


最可能的情况是,Reader类没有实现\uuuu iter\uuuu方法,这意味着无法调用下一个方法。

看起来您正在使用Reader对象。虽然这个对象有一个名为next的方法,但它不是迭代器,也不支持迭代


通常,这无关紧要,下一个内置函数将看到下一个方法并调用它,但Reader是用C编写的。用C编写的类型必须在C结构中提供一个tp_iternext函数,表示该类型,而不仅仅是下一个方法,才能被识别为迭代器,这种类型将tp_iternext设置为0。

您需要为next设置一个迭代器对象才能有意义。您没有提供足够的信息来确定,但我猜内置的next函数没有识别出Reader对象p是迭代器,可能是因为它没有u iter_uuuu方法,所以它不调用它的下一个方法。这个Reader对象来自哪里?这看起来像是一个有缺陷的C实现,它直接定义了下一个方法,而没有设置tp_iternext。你在使用Pcapy吗?谢谢,我确实在使用Pcapy。在我看来,内置函数next不需要迭代器。如果对象具有next方法,则可以将其传递给内置函数next。对象不需要有iter,我已经测试过了。我有一个对象,只有下一个方法。下一步可以传递到内置函数。好的,谢谢。我想这才是真正的原因。非常感谢。这让我很困惑