булевского типа. В boolobject.c вообще нет колбека для вызова hash. То есть, с hash(float('NaN')) мы попадаем отсюда в реализацию _Py_HashDouble и возвращаем 0. А с булом какая-то магия.
может быть потому что bool от int унаследован?
&PyLong_Type, /* tp_base */
Обсуждают сегодня