Boolean and
и or
не могут быть переопределены в Python.Это правда, что они имеют особое поведение (короткое замыкание, такое, что оба операнда не всегда оцениваются), и это как-то связано с тем, почему они не могут быть переопределены.Тем не менее, это (ИМХО) не вся история.
На самом деле, Python может обеспечить средство, которое поддерживает короткое замыкание, при этом позволяя операторам and
и or
быть переопределенным;это просто не делает этого.Это может быть преднамеренным выбором, чтобы сохранить простоту, или потому, что есть другие вещи, которые разработчики Python считают более полезными для разработчиков, и вместо этого работают над ними.
Однако это выборчасть дизайнеров Python, а не закон природы.