280 votes

Python: Surcharge de l'opérateur []? (__getitem__ () (méthode)

J'ai été à la recherche pour le nom de la fonction pour remplacer à la surcharge de l'opérateur []. Quelqu'un pourrait-il aider?

Merci

368voto

Dave Webb Points 90034

Vous devez utiliser l' __getitem__ méthode.

>>> class MyClass:
...     def __getitem__(self,index):
...         return index * 2
...
>>> myobj = MyClass()
>>> myobj[3]
6

Et si vous allez être les valeurs de réglage, vous aurez besoin de mettre en œuvre l' __setitem__ méthode de trop, sinon ce qui va se passer:

>>> myobj[5] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'

76voto

Dave Kirby Points 12310

Pleinement de surcharge, il vous faut également mettre en place l' __setitem__et __delitem__ méthodes.

modifier

J'ai presque oublié... si vous voulez émuler complètement une liste, vous avez également besoin d' __getslice__, __setslice__ and __delslice__.

Il sont tous documentés dans http://docs.python.org/reference/datamodel.html

20voto

Confusion Points 6056

Vous êtes à la recherche pour l' __getitem__ méthode. Voir http://docs.python.org/reference/datamodel.htmlla section 3.4.5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X