You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
708 B
38 lines
708 B
# create a class that has a __getitem__ method
|
|
class A:
|
|
def __getitem__(self, index):
|
|
print('getitem', index)
|
|
if index > 10:
|
|
raise StopIteration
|
|
|
|
# test __getitem__
|
|
A()[0]
|
|
A()[1]
|
|
|
|
# iterate using a for loop
|
|
for i in A():
|
|
pass
|
|
|
|
# iterate manually
|
|
it = iter(A())
|
|
try:
|
|
while True:
|
|
next(it)
|
|
except StopIteration:
|
|
pass
|
|
|
|
# this class raises an IndexError to stop the iteration
|
|
class A:
|
|
def __getitem__(self, i):
|
|
raise IndexError
|
|
print(list(A()))
|
|
|
|
# this class raises a non-StopIteration exception on iteration
|
|
class A:
|
|
def __getitem__(self, i):
|
|
raise TypeError
|
|
try:
|
|
for i in A():
|
|
pass
|
|
except TypeError:
|
|
print("TypeError")
|
|
|