
La classe object in Python
In Python, la classe `object` è la base di tutte le classi ed è in cima alla gerarchia delle classi.
Questo significa che ogni classe creata è implicitamente una sottoclasse di `object`, e quindi ogni oggetto è un'istanza di `object`. Non importa quale sia il tipo dell'oggetto tutti sono istanze di `object`.
Ad esempio, crea una lista
myList = [1,2,3]
Questa lista è un oggetto ed è un'istanza della classe `object`
print(isinstance(myList, object))
True
Anche la metaclasse `type` che crea le classi è a sua volta un'istanza della classe base `object`.
Tuttavia, `object` non ha superclassi, quindi si trova al vertice della gerarchia.
print(isinstance(type, object))
True
E ovviamente anche la classe base `object` è un'istanza di se stessa.
print(isinstance(object, object))
True
Ogni oggetto è un'istanza di `object` anche i dati.
Ad esempio, assegna un valore alla variabile n.
n=10
La variabile n è un'istanza della classe `object`
print(isinstance(n, object))
True
Lo stesso accade quando crei una classe predefinita.
class Foo:
pass
Se accedi all'attributo __base__ della classe ottieni la conferma che è un'oggetto della classe `object`
print(Foo.__bases__)
(<class 'object'>,)
In conclusione, tutte le classi ereditano implicitamente da `object`.
Questo significa che tutte le classi in Python, direttamente o indirettamente, sono sottoclassi di `object`, e quindi tutti gli oggetti sono istanze di `object`.
Alcuni oggetti sono "tipi" o "classi" se sono sottoclassi anche della classe `type`, altri oggetti invece non lo sono.