Любой способ переопределить оператор и в Python?

Я пытался переопределить __and__, но это для оператора &, а не - того, который я хочу. Могу ли я переопределить и?

4 ответа

Решение

Вы не можете переопределить and, or, а также not булевы операторы.

Нет, вы не можете переопределить and а также or, С поведением, которое они имеют в Python (т.е. короткое замыкание), они больше похожи на инструменты потока управления, чем на операторов, и переопределение их будет больше похоже на переопределение if чем + или -.

Вы можете повлиять на истинность ваших объектов (то есть, оценивают ли они как истинные или ложные), переопределив __nonzero__ (или же __bool__ в Python 3).

На самом деле, нет. Для логических операторов короткого замыкания нет специального имени метода.

Хотя вы не можете перегрузить __and__ Вы можете использовать инфикс для перегрузки и. В этом случае вы должны использовать & и & для представления оператора and.

Другие вопросы по тегам