¿Cuál es la forma canónica de comprobar el tipo en Python?
¿Cuál es la mejor manera de comprobar si un objeto dado es de un tipo determinado? ¿Qué tal comprobar si el objeto hereda de un tipo determinado?
Digamos que tengo un objeto o
. ¿Cómo puedo comprobar si es un str
?
1160
3
Para comprobar si
o
es una instancia destr
o cualquier subclase destr
, utilice isinstance (esta sería la forma "canónica"):Para comprobar si el tipo de
o
es exactamentestr
(excluyendo las subclases):Lo siguiente también funciona, y puede ser útil en algunos casos:
Ver Funciones incorporadas en la Referencia de la Biblioteca Python para información relevante.
Una nota más: en este caso, si estás usando python 2, es posible que quieras usar:
porque esto también atrapará cadenas Unicode (
unicode
no es una subclase destr
; tantostr
comounicode
son subclases debasestring
). Tenga en cuenta quebasestring
ya no existe en python 3, donde hay una separación estricta de cadenas (str
) y datos binarios (bytes
).Alternativamente,
isinstance
acepta una tupla de clases. Esto devolverá True si x es una instancia de cualquier subclase de cualquiera de (str, unicode):isinstance(o, str)
devolveráTrue
sio
es unstr
o es de un tipo que hereda destr
.type(o) is str
devolveráTrue
si y sólo sio
es un str. DevolveráFalse
sio
es de un tipo que hereda destr
.Enlace a docs