Nawet jeśli nie trzeba programować z nim, object
służy określonemu celowi: jest wspólna klasa, z którego wszystkie inne przedmioty pochodzą. Jest to ostatnia klasa wyszczególniona w metodzie mro
(method resolution order). Potrzebujemy nazwy i obiektu dla tej koncepcji, a do tego służy object
.
Innym zastosowaniem dla object
jest utworzenie sentinels.
sentinel = object()
ten jest często stosowany w programowaniu wielowątkowym - przeszedł przez kolejkach - do signal a termination event. Możemy nie chcieć wysyłać None
lub jakiejkolwiek innej wartości, ponieważ moduł obsługi kolejki może potrzebować interpretować te wartości jako argumenty do przetworzenia. Potrzebujemy unikalnej wartości, której nie może wygenerować żadna inna część programu.
Utworzenie w ten sposób wskaźnika zapewnia taki unikalny obiekt, który na pewno nie jest normalną wartością kolejki, a zatem można go przetestować i wykorzystać jako sygnał dla jakiegoś specjalnego zdarzenia. Istnieją inne możliwości, takie jak tworzenie klasy, instancji klasy lub funkcji, ale wszystkie te alternatywy są większe, mają więcej zasobów i nie są tak obfite jak object()
.
Nie jest przeznaczony do użycia jako funkcja; jest przeznaczony do użycia w klasie bazowej. – refi64
W python 3? Czemu? Co mogę z tego zyskać? Klasy dziedziczą te metody automatycznie, nie? – Aerovistae
Uważam za zabawne, jak w linkach do dokumentacji, które podajesz, ma on jakiś tekst z hiperłączami, który rekurencyjnie wskazuje na siebie. – Shashank