Python originally didn&#x27;t have a boolean type, and people used integer 0 and 1 as stand-ins for boolean values. When the boolean type was added, first (before the type existed) &quot;True&quot; and &quot;False&quot; were added as built-in aliases for integer 1 and 0, and then bool was implemented as a subclass of int, locked down so only two instances (True and False, with integer values 1 and 0) could exist.<p>So while it looks weird there is a rational backwards-compatibility reason for it.