neu definieren __and__ Operator
-
28-09-2019 - |
Frage
Warum ich den __and__
Operator nicht neu definieren kann?
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()
Ich will (a>0) && (b>0)
, aber ich habe b, dass das übliche Verhalten von and
Lösung
__and__
ist der binäre (bitweise) &
Operator, nicht der logische and
Operator.
Da der and
Betreiber ein Kurzschluss-Operator ist, kann sie nicht als eine Funktion implementiert werden. Das heißt, wenn das erste Argument falsch ist, wird das zweite Argument überhaupt nicht bewertet. Wenn Sie versuchen, dass als eine Funktion zu implementieren, haben beide Argumente bewertet werden, bevor die Funktion aufgerufen werden kann.
Andere Tipps
, weil Sie kein Schlüsselwort neu definieren kann (das ist, was and
ist) in Python. __add__
wird verwendet, um etwas anderes zu tun:
Diese Methoden aufgerufen werden die binären arithmetischen Operationen zu implementieren (...
&
...