Anche se non c'è bisogno di programmare con essa, object
ha uno scopo: è la classe comune da cui derivano tutti gli altri oggetti. È l'ultima classe elencata dal metodo mro
(method resolution order). Abbiamo bisogno di un nome e di un oggetto per questo concetto e object
serve a questo scopo.
Un altro utilizzo per object
consiste nella creazione di sentinels.
sentinel = object()
Questo è spesso usato nella programmazione multithread - passato attraverso le code - a signal a termination event. Potremmo non voler inviare None
o qualsiasi altro valore poiché il gestore della coda potrebbe dover interpretare quei valori come argomenti da elaborare. Abbiamo bisogno di un valore unico che nessun'altra parte del programma possa generare.
Creare una sentinella in questo modo fornisce solo un oggetto univoco che è sicuro di non essere un normale valore di coda, e quindi può essere testato e utilizzato come segnale per qualche evento speciale. Ci sono altre possibilità, come la creazione di una classe, un'istanza di classe o una funzione, ma tutte queste alternative sono più grandi, più pesanti in termini di risorse e non altrettanto efficaci come object()
.
Non deve essere utilizzato come funzione; è destinato ad essere utilizzato come classe base. – refi64
In python 3? Perché? Cosa potrei ottenere da questo? Le classi ereditano automaticamente quei metodi, no? – Aerovistae
Lo trovo esilarante come nel link alla documentazione che si fornisce, ha un testo con collegamenti ipertestuali che ricorsivamente indica se stesso. – Shashank