PyQuiz 41 – bool es subclase de int en Python

El reto
print(isinstance(True, int))¿Cuál es el resultado?
- a) True
- b) False
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: bool es subclase de int
En Python, bool es una subclase de int. Esto significa que True y False son literalmente enteros: True == 1 y False == 0. Como consecuencia, se pueden usar en operaciones aritméticas y isinstance(True, int) devuelve True.
Este diseño histórico de Python permite sumar booleanos, usarlos como índices y hacer operaciones numéricas con ellos, aunque rara vez es la mejor práctica desde el punto de vista de legibilidad.
print(True + True) # 2
print(True * 5) # 5
print(False + 1) # 1
print(type(True)) # <class 'bool'>
print(True == 1) # True
print(True is 1) # False — mismo valor, distinto objetoPaso a paso
isinstance(True, int)— Python comprueba siTruees instancia deinto de alguna de sus subclases.- La jerarquía de herencia de
Truees:bool → int → object.boolhereda directamente deint. - Como
booles subclase deint,isinstancedevuelveTrue. print(isinstance(True, int))— Se imprimeTrue.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: A) True
En Python, bool hereda de int. True es literalmente 1 y False es 0. isinstance(True, int) = True.
Sabías que…
Gracias a que bool hereda de int, puedes usar booleanos de formas sorprendentes, especialmente para contar elementos que cumplen una condición:
# Contar elementos pares en una lista
numeros = [1, 2, 3, 4, 5, 6]
cantidad_pares = sum(n % 2 == 0 for n in numeros)
print(cantidad_pares) # 3
# sum() suma True=1 y False=0
print(sum([True, False, True, True])) # 3
# bool como índice (curioso pero real)
opciones = ['No', 'Sí']
print(opciones[True]) # 'Sí'
print(opciones[False]) # 'No'Prueba tú mismo
¿Qué devuelve issubclass(bool, int)? ¿Y issubclass(int, bool)? ¿Cuál es la diferencia entre ambas llamadas?
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Tipos numéricos y booleanos
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
