在Python中,类型的确切规范是(1)序列(2)可迭代类型?
问题描述:
什么方法必须在一个类定义来实现,以便它可以被看作是一个序列类型和迭代类型?如果他们有一个正式的定义,你是否也可以提供一个PEP或其定义的文档的参考?在Python中,类型的确切规范是(1)序列(2)可迭代类型?
答
可迭代是:
与
__iter__()
或__getitem__()
方法的目的。的 iterables实例包括所有类型的序列(如列表,STR,和元组) 和一些非序列类型,如字典和文件。当可迭代 对象被作为参数传递给内置函数ITER(),它 返回对象的迭代器。这个迭代器对于一组值为一次传递 是有利的。
迭代器是:
可迭代具有next()方法。迭代器都要求有一个 方法
__iter__()
返回迭代器对象本身。一个 迭代器适用于一组值。
序列是:
可迭代该支持使用整数有效元素访问经由
__getitem__()
特殊方法 指数,并限定了LEN() 方法,它返回序列的长度。一些内置序列 类型是list,str,tuple和unicode。需要注意的是字典还支持__getitem__()
和__len__()
,但被认为是一个映射,而不是 序列,因为查找随心所欲的使用一成不变的键 而不是整数。
答
的集合模块定义用于定义序列和iterables抽象基类。对于迭代必须定义__iter__
,为序列必须定义__getitem__
。见http://docs.python.org/library/collections.html#collections-abstract-base-classes。
很棒的回答。谢谢! –