python如何使用__iter__()展現外部狀態

gamebus發表於2021-09-11

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學習指路:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4687/viewspace-2830542/,如需轉載,請註明出處,否則將追究法律責任。

相關文章