PyQuiz 41 - bool es subclase de int en Python | Quiz interactivo

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 objeto

Paso a paso

  1. isinstance(True, int) — Python comprueba si True es instancia de int o de alguna de sus subclases.
  2. La jerarquía de herencia de True es: bool → int → object. bool hereda directamente de int.
  3. Como bool es subclase de int, isinstance devuelve True.
  4. print(isinstance(True, int)) — Se imprime True.

📥 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.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir