2
我正在學習Python我沒有得到一件事。考慮以下代碼:__getitem__ for循環中的調用
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def __getitem__(self,index):
print "index",index
return self.items[index]
def __len__(self):
return len(self.items)
stack = Stack()
stack.push(2)
stack.push(1)
stack.push(0)
for item in stack:
print item
和輸出
index 0
2
index 1
1
index 2
0
index 3
爲什麼的GetItem調用四次?
實際上,我的原始代碼有它,看到更新。這是相同的。 –
是的,我錯了細節。原來是'__iter __()'而不是'__len __()'。現在解決這個問題。 – kindall
優秀。 BTW任何更好的方式來實現這個比def _iter __(self): for self in.items: yield i –