Как определить пользовательскую функцию для «и» Python? [Дубликат]

23
задан airportyh 23 January 2009 в 02:36
поделиться

3 ответа

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

23
ответ дан Ignacio Vazquez-Abrams 17 August 2018 в 12:52
поделиться
  • 1
    Примечательно, что PEP335 внесла предложение и в итоге было отклонено. – jpmc26 19 May 2017 в 02:09

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

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

32
ответ дан Rick Teachey 17 August 2018 в 12:52
поделиться
  • 1
    Семантика контрольного потока (ленивая оценка правой стороны) все еще может поддерживаться, если перегрузка является двоичным оператором, где правая часть передается как вызываемая, а не как значение. – DRayX 3 April 2017 в 16:52

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

1
ответ дан S.Lott 17 August 2018 в 12:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: