Przejrzałem większość dokumentacji __getitem__w dokumentacji Pythona, ale nadal nie jestem w stanie pojąć jej znaczenia.
Wszystko, co mogę zrozumieć, to to, że __getitem__jest używany do wykonywania wywołań takich jak self[key]. Ale jaki z tego pożytek?
Powiedzmy, że mam klasę Pythona zdefiniowaną w ten sposób:
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"])
To zwraca wyniki zgodnie z oczekiwaniami. Ale po co używać __getitem__w pierwszej kolejności? Słyszałem również, że Python wywołuje __getitem__wewnętrznie. Ale dlaczego to robi?
Czy ktoś mógłby wyjaśnić to bardziej szczegółowo?
__getitem__Wykorzystania w przykładzie nie ma wiele sensu, ale wyobrażam sobie, że trzeba napisać niestandardowy listy- słownika lub podobnego do klasy, która ma współpracować z istniejącym kodem, który używa []. Taka sytuacja __getitem__jest przydatna.