Tôi đã trải qua hầu hết tài liệu của __getitem__
trong tài liệu Python và cũng trong stackoverflow vì vậy đây không phải là câu hỏi trùng lặp. Nhưng tôi vẫn không thể hiểu ý nghĩa của nó.Tìm hiểu phương thức __getitem__
Vì vậy, tất cả những gì tôi có thể hiểu là __getitem__
được sử dụng để triển khai các cuộc gọi như self[key]
. Nhưng việc sử dụng nó là gì?
phép nói rằng tôi có một lớp python định nghĩa theo cách này:
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"])
này trả về kết quả như mong đợi. Nhưng tại sao lại sử dụng __getitem__
ngay từ đầu? Tôi cũng đã nghe nói rằng Python gọi __getitem__
nội bộ. Nhưng tại sao nó làm điều đó?
Ai đó có thể giải thích điều này chi tiết hơn không?
Điều này có thể quan tâm đến một ví dụ sử dụng: [Làm thế nào để đúng phân lớp dict và ghi đè __getitem__ & __setitem__ ] (http://stackoverflow.com/questions/2390827/how-to-properly-subclass-dict-and-override-getitem-setitem) – roganjosh
Việc sử dụng '__getitem__' trong ví dụ của bạn không có nhiều ý nghĩa, nhưng hãy tưởng tượng rằng bạn cần t o viết một danh sách tùy chỉnh hoặc từ điển giống như từ điển, mà phải làm việc với mã hiện có sử dụng '[]'. Đó là một tình huống mà '__getitem__' hữu ích. –