Quel est le nom de la méthode pour remplacer le []
opérateur _ (notation en indice) pour une classe en Python?
Vous devez utiliser le __getitem__
méthode .
class MyClass:
def __getitem__(self, key):
return key * 2
myobj = MyClass()
myobj[3] #Output: 6
Et si vous voulez définir des valeurs, vous devrez implémenter le __setitem__
méthode aussi, sinon cela se produira:
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'
Pour le surcharger complètement, vous devez également implémenter le __setitem__
et __delitem__
méthodes.
modifier
J'ai failli oublier ... si vous voulez imiter complètement une liste, vous avez également besoin de __getslice__, __setslice__ and __delslice__
.
Tous sont documentés dans http://docs.python.org/reference/datamodel.html
Vous recherchez le __getitem__
méthode. Voir http://docs.python.org/reference/datamodel.html , section 3.4.6