Каково название метода для переопределения []
оператор (преобразовывают нотацию в нижний индекс) для класса в Python?
Вам необходимо использовать метод __getitem__
.
class MyClass:
def __getitem__(self, key):
return key * 2
myobj = MyClass()
myobj[3] #Output: 6
И если вы собираетесь устанавливать значения, то вам также необходимо реализовать метод __setitem__
, иначе это произойдет:
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'
Вы ищете метод __getitem__
. Смотрите http://docs.python.org/reference/datamodel.html, раздел 3.4.6
Чтобы полностью перегрузить его, необходимо также реализовать методы __setitem__
и __delitem__
.
редактирование
Чуть не забыл... если вы хотите полностью эмулировать список, вам также нужны __getslice__, __setslice__ и __delslice__
.
Все это описано в http://docs.python.org/reference/datamodel.html