在Python中,类型是(1)sequence(2)可迭代类型的确切规范是什么?

Ale*_*tko 1 python collections

必须在类定义中实现哪些方法才能将其视为序列类型和可迭代类型?如果对它们有正式定义,您是否也可以提供对PEP或其他文档的定义?

unu*_*tbu 5

词汇表:

可迭代的是:

带有__iter__()__getitem__()方法的对象.迭代的示例包括所有序列类型(例如list,str和tuple)和一些非序列类型,如dict和file.当一个可迭代对象作为参数传递给内置函数iter()时,它返回该对象的迭代器.这个迭代器适用于一组值的一次传递.

迭代器是:

一个具有next()方法的iterable.迭代器需要有一个__iter__()返回迭代器对象本身的方法.迭代器适用于一组值的一次传递.

一个序列是:

一个iterable,它通过__getitem__()特殊方法使用整数索引支持有效的元素访问,并定义一个返回序列长度的len()方法.一些内置序列类型是list,str,tuple和unicode.请注意,dict也支持 __getitem__()__len__(),但是它被认为是映射而不是序列,因为查找使用任意不可变键而不是整数.