Pourquoi bool est-il techniquement une sous-classe de int en Python ?
Lorsque vous utilisez la bibliothèque memcached de Python pour stocker une valeur booléenne, il est initialement surprenant de observez son retour comme un entier. Une enquête plus approfondie révèle que Python interprète isinstance(val, int) comme True pour une valeur bool, ce qui implique que bool est en quelque sorte une sous-classe de int.
Cette relation particulière entre bool et int a une explication historique. Avant l'introduction du type bool dans les versions 2.2 ou 2.3 de Python, la représentation standard des valeurs booléennes utilisait les entiers 0 (False) et 1 (True).
Pour garantir la compatibilité avec le code existant qui reposait sur ce type convention, Python a implémenté le type bool d'une manière qui reflétait le comportement de 0 et 1. Cela signifiait non seulement préserver leurs valeurs de vérité, mais également étendre leurs fonctionnalités pour prendre en charge toutes les opérations intégrales.
En conséquence, le bool de Python tapez essentiellement "mascarades" sous forme d'entier. Bien qu'il soit possible d'utiliser des valeurs booléennes dans des contextes numériques, cela n'est pas recommandé. De même, tester l'égalité d'un bool et d'un entier pour la valeur de vérité peut conduire à un comportement inattendu.
Cette évolution historique explique pourquoi bool est une sous-classe de int en Python. Il sert d'artefact historique des exigences d'expansion et de compatibilité du langage Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!