python如何使用__iter__()展現(xiàn)外部狀態(tài)
(推薦操作系統(tǒng):windows7系統(tǒng)、Python3.9.1、DELLG3電腦。)
1、如果你想讓你的生成器暴露外部狀態(tài)給用戶(hù),別忘了你可以簡(jiǎn)單的將它實(shí)現(xiàn)為一個(gè)類(lèi),然后把生成器函數(shù)放到__iter__()方法中過(guò)去。比如:
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、為了使用這個(gè)類(lèi),你可以將它當(dāng)做是一個(gè)普通的生成器函數(shù)。然而,由于可以創(chuàng)建一個(gè)實(shí)例對(duì)象,于是你可以訪(fǎng)問(wèn)內(nèi)部屬性值,比如history屬性或者是clear()方法。代碼示例如下:
withopen('somefile.txt')asf:
lines=linehistory(f)
forlineinlines:
if'python'inline:
forlineno,hlineinlines.history:
print('{}:{}'.format(lineno,hline),end='')
以上就是python使用__iter__()展現(xiàn)外部狀態(tài)的方法,希望能對(duì)大家有所幫助。更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。