Thậm chí nếu bạn không cần phải lập trình với nó, object
phục vụ một mục đích: đó là lớp chung mà từ đó tất cả các đối tượng khác có nguồn gốc. Đây là lớp cuối cùng được liệt kê theo phương pháp mro
(method resolution order). Chúng ta cần một tên và đối tượng cho khái niệm này, và object
phục vụ mục đích này.
Sử dụng khác cho object
là tạo sentinels.
sentinel = object()
Điều này thường được sử dụng trong lập trình đa luồng - được chuyển qua hàng đợi - đến signal a termination event. Chúng tôi có thể không muốn gửi None
hoặc bất kỳ giá trị nào khác vì trình xử lý hàng đợi có thể cần phải diễn giải các giá trị đó dưới dạng đối số được xử lý. Chúng tôi cần một số giá trị duy nhất mà không có phần nào khác của chương trình có thể tạo ra.
Tạo một đường dẫn theo cách này chỉ cung cấp một đối tượng duy nhất đảm bảo không phải là giá trị hàng đợi bình thường và do đó có thể được kiểm tra và sử dụng làm tín hiệu cho một số sự kiện đặc biệt. Có những khả năng khác, chẳng hạn như tạo ra một lớp, hoặc thể hiện lớp, hoặc một hàm, nhưng tất cả các lựa chọn thay thế là lớn hơn, nhiều tài nguyên hơn, và không phải là pithy như object()
.
Nó không được dùng để làm chức năng; nó dự định được sử dụng một lớp cơ sở. – refi64
Trong python 3? Tại sao? Tôi sẽ kiếm được gì từ đó? Các lớp tự động kế thừa các phương thức đó, phải không? – Aerovistae
Tôi tìm thấy nó vui nhộn như thế nào trong liên kết tài liệu mà bạn cung cấp, nó có một số văn bản siêu liên kết mà đệ quy chỉ đến chính nó. – Shashank