переопределите __ и __ оператор

Почему я не могу переопределить __and__ оператор?

class Cut(object):
      def __init__(self, cut):
         self.cut = cut
      def __and__(self, other):
         return Cut("(" + self.cut + ") && (" + other.cut + ")")

a = Cut("a>0") 
b = Cut("b>0")
c = a and b
print c.cut()

Я хочу (a>0) && (b>0), но я получил b, что обычное поведение and

5
задан BalusC 2 May 2010 в 14:01
поделиться

2 ответа

__ и __ - это двоичный (побитовый) оператор & , а не логический оператор и .

Поскольку оператор и является оператором короткого замыкания, он не может быть реализован как функция. То есть, если первый аргумент ложен, второй аргумент вообще не оценивается. Если вы попытаетесь реализовать это как функцию, перед вызовом функции необходимо оценить оба аргумента.

11
ответ дан 13 December 2019 в 19:23
поделиться

, потому что вы не можете переопределить ключевое слово (это то, что и ) в Python. __ add __ используется для чего-то еще:

Эти методы вызываются для реализации двоичных арифметических операций (... & ...

0
ответ дан 13 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

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