getitem - python metaclass
¿Cómo anular el operador[]? (3)
¿Cuál es el nombre del método para anular el operador []
(notación de subíndice) para una clase en Python?
Está buscando el método __getitem__
. Ver http://docs.python.org/reference/datamodel.html , sección 3.4.6
Necesitas usar el método __getitem__
.
>>> class MyClass:
... def __getitem__(self, key):
... return key * 2
...
>>> myobj = MyClass()
>>> myobj[3]
6
Y si va a establecer valores, también deberá implementar el método __setitem__
; de lo contrario, esto sucederá:
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute ''__setitem__''
Para sobrecargarlo completamente, también debe implementar los métodos __setitem__
y __delitem__
.
editar
Casi lo olvido ... si quieres emular completamente una lista, también necesitas __getslice__, __setslice__ and __delslice__
.
Todos están documentados en http://docs.python.org/reference/datamodel.html