Bei der Interaktion mit Memcached über Python-Memcached wird ein Bool-Wert als Ganzzahl zurückgegeben. Diese überraschende Beobachtung führte zu weiteren Untersuchungen.
In Python werden isinstance(True, int) und issubclass(bool, int) beide mit True ausgewertet, was darauf hinweist, dass bool eine Unterklasse ist von int. Dies wirft die Frage auf: Warum ist das so?
Die Einführung des Bool-Typs in Python zielte darauf ab, die Darstellung von Wahrheitswerten zu verbessern. Um die Abwärtskompatibilität sicherzustellen, musste sich der Bool-Typ jedoch identisch mit 0 und 1 (den vorherigen Wahrheitswertdarstellungen) verhalten. Dies ging über den Wahrheitswert hinaus und umfasste alle integralen Operationen.
Um bestehende Codes, die auf booleschen Werten basieren, nicht auf nicht ideale Weise zu stören, wurde der Bool-Typ als True implementiert und False maskiert sich jeweils als 1 und 0. Diese historische Entscheidung führte zu der ungewöhnlichen Vererbungsbeziehung zwischen bool und int.
Die Unterklassenbeziehung zwischen bool und int ist ein Relikt der sprachlichen Entwicklung von Python. Es ermöglicht eine nahtlose Integration mit Legacy-Code, der boolesche Werte als Ganzzahlen behandelt und gleichzeitig die moderne Verwendung des Bool-Typs berücksichtigt.
Das obige ist der detaillierte Inhalt vonWarum ist Bool eine Unterklasse von Int in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!