反復可能オブジェクトと反復
1449 ワード
反復器は集団内の要素にアクセスする方法であり、一般的にデータを巡回するために使用されます.
反復器は以下のラベルのアクセス方式とは異なり、反復器は返すことができません.反復器はlistのようにすべてのデータを一度に格納するのではなく、一時的に1つのデータを生成する不活性な方法を提供します.
反復可能オブジェクトが実装されました_iter__魔法関数(listなど、反復可能なオブジェクト)
反復器が実現したのは実現しただけではない.iter__(自分で定義したクラス内で再定義することなく、Iteratorクラスを継続することができます)、さらに_next__方法
反復器は以下のラベルのアクセス方式とは異なり、反復器は返すことができません.反復器はlistのようにすべてのデータを一度に格納するのではなく、一時的に1つのデータを生成する不活性な方法を提供します.
反復可能オブジェクトが実装されました_iter__魔法関数(listなど、反復可能なオブジェクト)
反復器が実現したのは実現しただけではない.iter__(自分で定義したクラス内で再定義することなく、Iteratorクラスを継続することができます)、さらに_next__方法
from collections.abc import Iterable, Iterator
class Company:
def __init__(self, employ_list):
self.employ = employ_list
# def __getitem__(self, item):
# return self.employ[item]
def __iter__(self): # , Company
return MyIterator(self.employ) #
class MyIterator(Iterator): # Iterator
def __init__(self, employ_list):
self.employ_list = employ_list
self.index = 0
def __next__(self): # __next__ , MyIterator
try:
person = self.employ_list[self.index]
except IndexError:
raise StopIteration
self.index += 1
return person
if __name__ == '__main__':
company = Company(['john', 'mary', 'sam'])
company_itor = iter(company) # company Company ,
for employ in company: # company_itor , Company __getitem__
print(employ)