我有類Count,需要3個參數,包括self,mystart和myend。它應該從mystart開始計算,直到使用神奇的方法__iter__
,__next__
和__reversed__
我的終點(也是相反的)。我已經實施了所有三種魔術方法。但我仍然不確定這是否是實施下一個逆向方法的正確方法。是否有可能我可以調用內置函數,並在我的__next__
和__reversed__
方法中反轉,或者有任何pythonic方法嗎?__reversed__神奇的方法
class Count:
def __init__(self,mystart,myend):
self.mystart=mystart
self.myend=myend
self.current=mystart
self.reverse=[]
def __iter__(self):
"Returns itself as an Iterator Object"
return self
def __next__(self):
if self.current > self.myend:
raise StopIteration
else:
self.current+=1
return self.current-1
def __reversed__(self):
for i in range(self.myend,self.mystart,-1):
self.reverse.append(i)
return self.reverse
obj1=Count(0,10)
print("FOR LOOP")
for i in obj1:
print (i,end=",")
print ("\nNEXT")
obj2=Count(1,4)
print(next(obj2))
print(next(obj2))
print ("Reversed")
print(reversed(obj1))
爲了讓大家知道「正確」的方式是什麼,什麼是期望的結果。你的代碼看起來不是那麼糟糕 – wheaties
但是我在__reversed__方法中創建了一個新列表,這並不給我很好的感覺。 :) –
給迭代器一個'__reversed__'方法沒什麼意義。這是針對具有排序概念的序列和其他多重迭代迭代。 – user2357112