С помощью следующего кода:
import types
class Foo():
def __getitem__(self, x):
return x
def new_get(self, x):
return x + 1
x = Foo()
x.__getitem__ = types.MethodType(new_get, x)
x.__getitem__(42) вернет 43, а x[42] вернет 42.
Есть ли способ переопределить __getitem__ на уровне экземпляра в Python?