Python type()
La funzione type() restituisce il tipo dell'oggetto o restituisce un nuovo oggetto tipo in base agli argomenti passati.
La funzione type() ha due forme diverse:
type(oggetto)
type(nome, base, dict)
Se un singolo oggetto viene passato a type(), la funzione restituisce il suo tipo.
n_lst = [1, 2]
print (type(n_lst))
n_dct = {1: 'uno', 2: 'due'}
print (type(n_dct))
class Prova:
a = 0
prova = Prova()
print (type(prova))
Output del codice
<class 'list'>
<class 'dict'>
<class '__main__.Prova'>
Se hai bisogno di controllare il tipo di oggetto, è meglio usare la funzione Python isinstance(). Questo perché la funzione isinstance() controlla anche se l'oggetto dato è un'istanza della sottoclasse.
Se tre parametri vengono passati a type(), restituisce un nuovo oggetto type.
- nome: un nome di classe. Diventa l'attributo __nome__ .
- base: una tupla che itemizza la classe base. Diventa l'attributo __base__ .
- dict: un dizionario che è lo spazio dei nomi contenente le definizioni per il corpo della classe. Diventa l'attributo __dict__ .
o1 = type('X', (object,), dict(a='Foo', b=12))
print (type(o1))
print (vars(o1))
class test:
a = 'prova'
b = 33
o2 = type('Y', (test,), dict(a='prova', b=33))
print (type(o2))
print (vars(o2))
Output del codice
<class 'type'>
{'a': 'Foo', 'b': 12, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'X' objects>, '__weakref__': <attribute '__weakref__' of 'X' objects>, '__doc__': None}
<class 'type'>
{'a': 'prova', 'b': 33, '__module__': '__main__', '__doc__': None}