special getitem from __str__ __eq__ __dict__ python operator-overloading

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?



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