При зберіганні буля в memcached через python-memcached я помітив, що він повертається як ціле число. Перевірка коду бібліотеки показала мені, що є місце, де isinstance(val, int)
перевіряється позначення значення як ціле число.
Тому я протестував його в оболонці python і помітив наступне:
>>> isinstance(True, int)
True
>>> issubclass(bool, int)
True
Але чому саме bool
підклас int
?
Це начебто має сенс, оскільки булеве значення в основному є int, яке може приймати лише два значення, але йому потрібно набагато менше операцій / простору, ніж фактичне ціле число (без арифметики, лише один біт місця для зберігання) ....