File: LP6E/Chapter32/typesubclass.py
"""
Subclass built-in list type/class.
Map 1..N to 0..N-1, call back to built-in version.
"""
class MyList(list):
def __getitem__(self, offset):
print(f'<indexing {self} at {offset}>')
return list.__getitem__(self, offset - 1)
if __name__ == '__main__':
print(list('abc'))
x = MyList('abc') # __init__ inherited from list
print(x) # __str__/__repr__ inherited from list
print(x[1]) # MyList.__getitem__
print(x[3]) # Customizes list superclass method
x.append('hack!'); print(x) # Attributes from list superclass
x.reverse(); print(x)