当前位置: 首页 > 图灵资讯 > 行业资讯> python如何使用__iter__()展现外部状态

python如何使用__iter__()展现外部状态

来源:图灵python
时间: 2024-08-27 13:53:55

(推荐操作系统:windows7系统,Python 3.9.1、DELL G3电脑。)

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() 方法。代码示例如下:

with open('somefile.txt') as f:

lines = linehistory(f)

for line in lines:

if 'python' in line:

for lineno, hline in lines.history:

print('{}:{}'.format(lineno, hline), end='')

以上是python使用__iter__()展示外部状态的方法,希望能对大的有所帮助。家庭有帮助。更多Python学习指南:基础教程python基础教程