Neden int bir alt sınıfı bool mi?
Bir bool depolama ile python-memcached memcached zaman bir tamsayı olarak döndürülür fark ettim. Kütüphane kodunu kontrol isinstance(val, int)
bir tamsayı değeri bayrağı kontrol etmek için bir yer olduğunu bana gösterdi.
Python kabuğunda test ettim ve şunları fark ettim:
>>> isinstance(True, int)
True
>>> issubclass(bool, int)
True
Ama neden tam olarak bool
int
sınıfıdır?
Bir bakıma mantıklı çünkü bir boolean temel olarak bir int olan sadece iki değerleri ama ihtiyacı çok daha az operasyon alanı daha gerçek bir tam sayı (aritmetik, sadece tek bir bit depolama alanı)....
CEVAP
http://www.peterbe.com/plog/bool-is-int bir yorum
Eğer bool türü zaman yanlarında olsaydı gayet mantıklı, python (bazen yaklaşık 2.2 veya 2.3) eklendi.
Gerçek bool bir tür giriş öncesinde, 0 ve 1 idi doğruluk değeri, C89 benzer resmi gösterimi. Önlemek için gereksiz yere ideal olmayan kırılma ama Kanun, yeni bool tipi çalışma 0 ve 1 gibi çalışması gerekli. Bu sadece doğruluk değeri,ötesinde ama tüm integral işlemleri. Kimse bir boolean kullanmanızı tavsiye ederim sayısal bir bağlamda sonuç, ne de çoğu insan test tavsiye ederim gerçek değerini belirlemek için eşitlik, kimse sabit olduğunu öğrenmek istedim sadece varolan kodu bu şekilde ne kadar yol. Bu nedenle bu kararı Doğru ve Yanlış olarak maskeli balo 1 ve 0 sırasıyla. Bu sadece bir. dilsel evrim tarihi eser.
Kredi bu güzel açıklama için dman13 gider.
Neden Java Vector sınıfı eski veya kul...
Neden C# 4 isteğe bağlı parametreler a...
Neden İşlev<T,bool > Predicate< y...
Neden XML seri hale getirilebilir sını...
Böyle büyük mükafat olarak bir sınıfı ...