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