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

美女程序员鼓励师

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

1、如果你想让你的生成器暴露外部状态给用户, 别忘了你可以简单的将它实现为一个类,然后把生成器函数放到 __iter__() 方法中过去。比如:

from collections import deque

 

class linehistory:

    def __init__(self, lines, histlen=3):

        self.lines = lines

        self.history = deque(maxlen=histlen)

 

    def __iter__(self):

        for lineno, line in enumerate(self.lines, 1):

            self.history.append((lineno, line))

            yield line

 

    def clear(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基础教程

以上是 python如何使用__iter__()展现外部状态 的全部内容, 来源链接: utcz.com/z/543605.html

回到顶部