Любой способ переопределить оператор и в Python? - PullRequest
26 голосов
/ 23 января 2009

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

Ответы [ 4 ]

35 голосов
/ 23 января 2009

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

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

26 голосов
/ 23 января 2009

Вы не можете переопределить логические операторы and, or и not.

1 голос
/ 23 января 2009

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

0 голосов
/ 28 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...