您的位置:首页 > 编程语言 > Python开发

python基础----__next__和__iter__实现迭代器协议

2017-04-25 17:04 691 查看
from collections import Iterable,Iterator
class Foo:
def __init__(self,start):
self.start=start

def __iter__(self):
return self

def __next__(self):
return 'aSB'

f=Foo(0)
f.__iter__()
f.__next__()

print(isinstance(f,Iterable))
print(isinstance(f,Iterator))

print(next(f)) #f.__next__()
print(next(f)) #f.__next__()
print(next(f)) #f.__next__()

for i in f: # res=f.__iter__() #next(res)
print(i)

from collections import Iterable,Iterator
class Foo:
def __init__(self,start):
self.start=start

def __iter__(self):
return self

def __next__(self):
if self.start > 10:
raise StopIteration
n=self.start
self.start+=1
return n

f=Foo(0)

print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))
print(next(f))

for i in f:
print('====>',i)

class Range:
'123'
def __init__(self,start,end):
self.start=start
self.end=end

def __iter__(self):
return self

def __next__(self):
if self.start == self.end:
raise StopIteration
n=self.start
self.start+=1
return n

for i in Range(0,3):
print(i)

print(Range.__doc__)

class Foo:
'我是描述信息'
pass

class Bar(Foo):
pass
print(Bar.__doc__) #该属性无法继承给子类

b=Bar()
print(b.__class__)
print(b.__module__)
print(Foo.__module__)
print(Foo.__class__) #?
笔记

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: