bei dem folgenden Beispiel aus "Beginning Python" (Seite 186) von Magnus Lie Hetland soll nach Vorgabe bei der ersten counter-Abfrage
0 und bei der zweiten 2 herauskommen.
Code: Alles auswählen
In [41]: class CounterList(list):
....: def __init__(self, *args):
....: super(CounterList, self).__init__(*args)
....: self.counter = 0
....: def __getitem__(self, index):
....: self.counter += 1
....: return super(CounterList, self).__getitem__(index)
....:
In [42]: cl = CounterList(range(10))
In [43]: cl
Out[43]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [44]: cl.reverse()
In [45]: cl
Out[45]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
In [46]: del cl[3:6]
In [47]: cl
Out[47]: [9, 8, 7, 3, 2, 1, 0]
In [48]: cl.counter
Out[48]: 3
In [49]: cl[4] + cl[2]
Out[49]: 9
In [50]: cl.counter
Out[50]: 5
Kann mir jemand verraten, wieso das abweichende Ergebnis herauskommt. Oder ist das vielleicht nur ein Fehler im Buch? Ich nutzte Python 2.6.1
Gruß
Klaus