python如何使用__iter__()展现外部状态
(推荐操作系统:windows7系统、Python3.9.1、DELLG3电脑。)
1、如果你想让你的生成器暴露外部状态给用户,别忘了你可以简单的将它实现为一个类,然后把生成器函数放到__iter__()方法中过去。比如:
fromcollectionsimportdeque
classlinehistory:
def__init__(self,lines,histlen=3):
self.lines=lines
self.history=deque(maxlen=histlen)
def__iter__(self):
forlineno,lineinenumerate(self.lines,1):
self.history.append((lineno,line))
yieldline
defclear(self):
self.history.clear()
2、为了使用这个类,你可以将它当做是一个普通的生成器函数。然而,由于可以创建一个实例对象,于是你可以访问内部属性值,比如history属性或者是clear()方法。代码示例如下:
withopen('somefile.txt')asf:
lines=linehistory(f)
forlineinlines:
if'python'inline:
forlineno,hlineinlines.history:
print('{}:{}'.format(lineno,hline),end='')
以上就是python使用__iter__()展现外部状态的方法,希望能对大家有所帮助。更多Python学习教程请关注IT培训机构:千锋教育。