Altro
Qual è il modo canonico di controllare il tipo in Python?
Qual è il modo migliore per controllare se un dato oggetto è di un dato tipo? Che ne dite di controllare se l'oggetto eredita da un dato tipo?
Diciamo che ho un oggetto o
. Come faccio a controllare se è un str
?
1160
3
Per controllare se
o
è un'istanza distr
o una qualsiasi sottoclasse distr
, usate isinstance (questo sarebbe il modo "canonico"):Per controllare se il tipo di
o
è esattamentestr
(escludere le sottoclassi):Anche la seguente funziona, e può essere utile in alcuni casi:
Vedere Built-in Functions nella Python Library Reference per informazioni rilevanti.
Un'altra nota: in questo caso, se state usando python 2, potreste effettivamente voler usare:
perché questo catturerà anche le stringhe Unicode (
unicode
non è una sottoclasse distr
; siastr
cheunicode
sono sottoclassi dibasestring
). Si noti chebasestring
non esiste più in python 3, dove c'è una rigida separazione di stringhe (str
) e dati binari (bytes
).In alternativa,
isinstance
accetta una tupla di classi. Questo restituirà True se x è un'istanza di qualsiasi sottoclasse di qualsiasi (str, unicode):isinstance(o, str)
restituiràTrue
seo
è unstr
o è di un tipo che eredita dastr
.type(o) is str
restituiràTrue
se e solo seo
è uno str. RestituiràFalse
seo
è di un tipo che eredita dastr
.Link ai documenti