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}