6

__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()

I want (a>0) && (b>0), but I got b, that の通常の振る舞いand

4

2 に答える 2

13

__and__&論理演算子ではなく、2 項 (ビット単位)演算and子です。

and演算子は短絡演算子であるため、関数として実装できません。つまり、最初の引数が false の場合、2 番目の引数はまったく評価されません。それを関数として実装しようとすると、関数を呼び出す前に両方の引数を評価する必要があります。

于 2010-04-19T15:33:41.053 に答える
1

andPython ではキーワードを再定義することはできません (それがそれです)。__add__何か他のことをするために使用されます:

これらのメソッドは、バイナリ算術演算を実装するために呼び出されます (... &...

于 2010-04-19T15:35:32.967 に答える