我试图理解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

08-24 20:34