我有类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