我试图理解python中的运算符重载,并且我编写了一个小程序来重载__getitem__()
方法并调用for循环:
class Ovl:
data = [1,2,3,4,5]
def __getitem__(self, index):
return "Hiii"
x=Ovl()
for item in x:
print item
该程序进入无限循环打印“Hiii”。我想知道其背后的原因。
最佳答案
根据 object.__getitem__
注意,
>>> class Ovl:
... data = [1,2,3,4,5]
... def __getitem__(self, index):
... if index >= 5:
... raise IndexError('End')
... return "Hiii"
...
>>> x=Ovl()
>>>
>>> for item in x:
... print item
...
Hiii
Hiii
Hiii
Hiii
Hiii