python如何使用__iter__()展現外部狀態
(推薦操作系統:windows7系統、Python3.9.1、DELLG3電腦。)
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()方法。代碼示例如下:
withopen('somefile.txt')asf:
lines=linehistory(f)
forlineinlines:
if'python'inline:
forlineno,hlineinlines.history:
print('{}:{}'.format(lineno,hline),end='')
以上就是python使用__iter__()展現外部狀態的方法,希望能對大家有所幫助。更多Python學習教程請關注IT培訓機構:千鋒教育。