Altro
Quali sono le differenze tra type() e isinstance()?
Quali sono le differenze tra questi due frammenti di codice?
Usando type()
:
import types
if type(a) is types.DictType:
do_something()
if type(b) in types.StringTypes:
do_something_else()
Usando isinstance()
:
if isinstance(a, dict):
do_something()
if isinstance(b, str) or isinstance(b, unicode):
do_something_else()
1153
3
Ecco un esempio in cui
isinstance
ottiene qualcosa chetype
non può:in questo caso, un oggetto camion è un Veicolo, ma si ottiene questo:
In altre parole,
isinstance
è vero anche per le sottoclassi.Vedi anche:
Quest'ultimo è preferito, perché gestirà correttamente le sottoclassi. In effetti, il tuo esempio può essere scritto ancora più facilmente perché il secondo parametro di
isinstance()
'può essere una tupla:oppure, usando la classe astratta
basestring
:Secondo la documentazione di python ecco una dichiarazione:
Quindi
isinstance()
dovrebbe essere preferito atype()
.