"""
Klasa podrzędna wbudowanego typu (klasy) listy.
Odwzorowanie 1..N na 0..N-1; wywołanie z powrotem wbudowanej wersji.
"""

class MyList(list):
    def __getitem__(self, offset):
        print(f'<indeksowanie {self} w pozycji {offset}>')
        return list.__getitem__(self, offset - 1)

if __name__ == '__main__':
    print(list('abc'))
    x = MyList('abc')               # Metoda __init__ odziedziczona po liście
    print(x)                        # Metoda __repr__/__str__ odziedziczona po liście

    print(x[1])                     # MyList.__getitem__
    print(x[3])                     # Dostosowuje metodę klasy nadrzędnej listy

    x.append('hakować!'); print(x)     # Atrybuty z klasy nadrzędnej listy
    x.reverse();       print(x)

