gth*_*thm 5 python operator-overloading python-2.7
我试图理解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
Run Code Online (Sandbox Code Playgroud)
该程序进入无限循环打印"Hiii".我想知道背后的原因.
fal*_*tru 12
根据object.__getitem__NOTE,
注意:
for循环期望为非法索引引发一个IndexError,以便正确检测序列的结尾.
>>> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |