J'ai parcouru la plupart de la documentation de __getitem__
dans la documentation Python, mais je ne parviens toujours pas à en saisir la signification.
Donc tout ce que je peux comprendre c'est que __getitem__
est utilisé pour mettre en œuvre des appels comme self[key]
. Mais à quoi cela sert-il ?
Disons que j'ai une classe python définie de cette façon :
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def __getitem__(self,key):
print ("Inside `__getitem__` method!")
return getattr(self,key)
p = Person("Subhayan",32)
print (p["age"])
Cela donne les résultats escomptés. Mais pourquoi utiliser __getitem__
en premier lieu ? J'ai également entendu dire que Python appelle __getitem__
en interne. Mais pourquoi le fait-il ?
Quelqu'un peut-il expliquer cela plus en détail ?
0 votes
Cela peut être intéressant pour un exemple d'utilisation : Comment sous-classer correctement dict et surcharger getitem & setitem
9 votes
El
__getitem__
dans votre exemple n'a pas beaucoup de sens, mais imaginez que vous ayez besoin d'écrire une classe personnalisée de type liste ou dictionnaire, qui doit fonctionner avec du code existant qui utilise[]
. C'est une situation où__getitem__
est utile.1 votes
Le principal cas d'utilisation, à mon avis, est lorsque vous écrivez une classe personnalisée qui représente une collection de choses. Cela vous permet d'utiliser l'indexation familière par liste/rayon comme
planets[i]
pour accéder à un élément donné, même siplanets
n'est pas réellement une liste (et il pourrait, sous couvert, utiliser n'importe quelle structure de données de son choix, comme une liste ou un graphe lié, ou implémenter n'importe quelle fonction non-listée de son choix, ce qu'une liste ne pourrait pas faire).