С помощью следующего кода:
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?