Passei pela maior parte da documentação dos documentos do __getitem__Python, mas ainda não consigo entender o significado dela.
Então, tudo o que consigo entender é que __getitem__é usado para implementar chamadas como self[key]. Mas qual é a utilidade disso?
Digamos que eu tenho uma classe python definida desta maneira:
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"])
Isso retorna os resultados conforme o esperado. Mas por que usar __getitem__em primeiro lugar? Também ouvi dizer que o Python chama __getitem__internamente. Mas por que isso acontece?
Alguém pode explicar isso com mais detalhes?
__getitem__uso no seu exemplo não faz muito sentido, mas imagine que você precise escrever uma classe personalizada de lista ou dicionário, que precisa trabalhar com o código existente que o usa []. Essa é uma situação em que __getitem__é útil.