Ngoài việc bỏ qua bất kỳ thuộc tính cá thể nào theo sở thích của tính chính xác, tra cứu phương pháp đặc biệt ngầm cũng thường bỏ qua phương thức
__getattribute__()
ngay cả đối tượng siêu di tích của đối tượng.Phương pháp đặc biệt nào bỏ qua __getattribute__ bằng Python?
The docs đề cập đến phương pháp đặc biệt như __hash__
, __repr__
và __len__
, và tôi biết từ kinh nghiệm nó cũng bao gồm __iter__
cho Python 2.7.
Để báo an answer to a related question:
"Magic
__methods__()
được đối xử đặc biệt: Họ đang trong nội bộ giao cho 'khe' trong cấu trúc kiểu dữ liệu để tăng tốc độ của họ nhìn lên, và họ chỉ nhìn lên trong những khe. "
Để tìm cách cải thiện câu trả lời của tôi cho another question, tôi cần biết: Chúng tôi đang nói về phương pháp nào?
Phương pháp nào được chỉ định cho các vị trí? –
Tôi nghĩ mọi phương pháp được liệt kê [ở đây] (http://docs.python.org/reference/datamodel.html#specialnames). Dù sao đi nữa, điều này chỉ áp dụng nếu bạn gọi phương thức bằng cách sử dụng "cú pháp của nó". Ví dụ 'a + 5' sẽ không gọi' __getattribute__', trong khi 'a .__ add __ (5)' * sẽ * gọi nó. Về cơ bản '__getattribute__' được gọi bất cứ khi nào bạn sử dụng dấu chấm (' .') để truy cập thuộc tính. – Bakuriu
@ Bakuriu: Rất nhiều thông tin, cảm ơn bạn. – porgarmingduod