
L'introspezione negli oggetti in Python
In questo tutorial ti spiego cos'è l'introspezione nel linguaggio Python.
A cosa serve? L'introspezione in Python ti permette di conoscere o modificare lo stato, le proprietà e la tipologia di un oggetto. In altre parole, è un modo per ispezionare ciò che un oggetto "è" e "può fare".
Python fornisce diverse funzioni e metodi built-in per l'introspezione. Eccone alcuni:
- type()
Restituisce il tipo dell'oggetto. Ad esempio, puoi utilizzarlo per sapere se un oggetto è una lista, un dizionario, un intero, una stringa, ecc.
Esempio. Crea una lista>>> var = [1,2,3,4]
Poi verifica il tipo di dati nella variabile var usando la funzione type()>>> type(var)
La funzione type restituisce il tipo di dato. In questo caso è una lista<class 'list'>
- dir()
Restituisce un elenco di attributi e metodi associati all'oggetto. In questo modo puoi esaminare quali funzioni può chiamare un oggetto.
Esempio. Crea una lista>>> var = [1,2,3,4]
Poi visualizza l'elenco delle proprietà e dei metodi che puoi chiamare da un oggetto del tipo "list" tramite la funzione dir()>>> dir(var)
La funzione dir() visualizza l'elenco delle proprietà e dei metodi:
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', ... ecc.
- id()
Restituisce l'identificativo unico dell'oggetto in Python. Puoi usare questo identificativo per verificare se due riferimenti si riferiscono allo stesso oggetto.
Esempio. Crea una tupla.>>> var = (1,2,3,4)
Poi visualizza l'identificativo dell'oggetto tramite la funzione id()
>>> id(var)
La funzione id() restituisce il riferimento dell'oggetto nella memoria del computer.
140492943321280
- getattr(), setattr(), e delattr()
Queste funzioni possono essere utilizzate per ottenere, impostare o eliminare attributi di un oggetto rispettivamente. - hasattr()
Verifica se un oggetto ha un determinato attributo indicato tra le parentesi tonde. Restituisce il valore booleano True se lo possiede. In caso contrario, restituisce False.
Esempio. Crea una tupla.>>> var = (1,2,3,4)
Poi verifica se ha l'attributo 'real' usando la funzione hasattr().
hasattr(var,'real')
La funzione restituisce False perché le tuple non hanno l'attributo 'real'False
- in
Verifica se una parola chiave si trova in un oggetto.
Esempio. Crea una stringa nella variabile var
>>> var = "Python"
Poi verifica se la sottostringa "th" si trova nella stringa tramite la funzione in().
>>> "th" in var
La funzione restituisce True perché la sottostringa "th" si trova effettivamente nella stringa "Python"
True
- is
Verifica se due oggetti hanno lo stesso riferimento (o identità) nella memoria del computer.
Esempio. Crea due liste nelle variabili "list1" e "list2"
>>> list1 = [1,2,3]
Poi verifica se i due oggetti hanno lo stesso riferimento in memoria tramite l'operatore is.
>>> list2 = [1,2,3]
>>> list1 is list2
La funzione restituisce False perché le due liste, pur essendo uguali, hanno due riferimenti di memoria diversi. In altre parole, sono due oggetti memorizzati in indirizzi di memoria differenti.
False
- isinstance()
Ti permette di verificare se un oggetto è un'istanza di una determinata classe o di un sottotipo di essa. - issubclass()
Verifica se una classe è una sottoclasse di un'altra classe.
Questi strumenti di introspezione possono essere molto utili quando lavori con codice Python.