• 技术文章 >Python技术 >Python基础教程

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

    小妮浅浅小妮浅浅2021-05-10 09:51:50原创2689

    (推荐操作系统: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__
    上一篇:python生成器如何进行解析 下一篇:python生成器切片的实现

    相关文章推荐

    • python返回函数有什么作用?• python异常处理的流程是什么?• python生成器函数的特点• python中yield的使用注意• python生成器调用方法引发异常• python生成器如何进行解析

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网