Любой способ переопределить оператор и в Python?
Я пытался переопределить __and__
, но это для оператора &, а не - того, который я хочу. Могу ли я переопределить и?
4 ответа
Вы не можете переопределить and
, or
, а также not
булевы операторы.
Нет, вы не можете переопределить and
а также or
, С поведением, которое они имеют в Python (т.е. короткое замыкание), они больше похожи на инструменты потока управления, чем на операторов, и переопределение их будет больше похоже на переопределение if
чем + или -.
Вы можете повлиять на истинность ваших объектов (то есть, оценивают ли они как истинные или ложные), переопределив __nonzero__
(или же __bool__
в Python 3).
На самом деле, нет. Для логических операторов короткого замыкания нет специального имени метода.
Хотя вы не можете перегрузить __and__
Вы можете использовать инфикс для перегрузки и. В этом случае вы должны использовать & и & для представления оператора and.