Thỉnh thoảng, mọi người tham chiếu đến các đối tượng "giống X" bằng Python. Example:"Dict-like" có nghĩa là gì trong Python?
data_iter_maker - Đối số không thể gọi trả về một trình lặp trên đối tượng dữ liệu giống như dict.
Có phải "giống dict" có định nghĩa chính xác hay không và nếu có thì định nghĩa là gì? Nó có phải là một đối tượng x
có thể được lập chỉ mục như một từ điển có thể: x[a]
, trong đó a
là một hàm băm không? Trong trường hợp đó, một tên được đặt tên có thể không được coi là dict giống như, vì bạn không thể lập chỉ mục bằng cách sử dụng một biểu thức như x['a']
(cuối cùng tôi đã kiểm tra bạn phải viết x.a
). Nhưng mặt khác, các tên gọi có chức năng tương tự như các dicts mà tôi không chắc nên nghĩ gì. Về mặt lý thuyết, tôi bị cám dỗ để đoán rằng "giống như dict" có nghĩa là "một đối tượng đủ tương tự để dict rằng mã của tôi sẽ tạo ra cùng một câu trả lời như thể bạn đã gửi một đối tượng dict tương đương ngữ nghĩa". Nói cách khác, "chạy hàm và tìm ra cho chính mình nếu đối số của bạn là giống như dict!"
Nói chung, là đối tượng giống như X thực hiện giao diện giống với X?
* "Thông thường, là một đối tượng giống như X thực hiện giao diện giống như X?" * - vâng! Python thường sử dụng [gõ vịt] (https://docs.python.org/3/glossary.html#term-duck-typing). – jonrsharpe
* "Nói cách khác," chạy hàm và tìm ra cho chính mình nếu đối số của bạn là giống như dict! "" * - Tôi mong chờ * "dict-like" * tương đương với * "thực hiện [' MutableMapping' interface] (https://docs.python.org/2/library/collections.html#collections-abstract-base-classes) "*. – jonrsharpe
Không có gì hoài nghi về điều đó! Có một mô-đun hoàn toàn dành riêng cho việc lừa các chương trình python, kiểm tra [các lớp cơ sở trừu tượng] (https://docs.python.org/3.5/library/abc.html). – tdelaney