(推荐操作系统: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面向对象编程01/08
- ♥ FuckIt.py 库使你的代码远离错误11/23
- ♥ python os模块有多少用途?12/25
- ♥ 盘点Python中字符串的常用操作01/14
- ♥ 在 python3 类中使用 Cat 变量是否有限制?12/19
- ♥ C语言与Python如何相互调用12/31
内容反馈