I was under the impression it was possible to overload and
in Python, but reading through the docs just now, I realized that __and__
refers to the bitwise &
operator, not logical and
.
Am I overlooking something, or is it not possible to overload logical and
in Python?
No this is not possible. There is a proposal that adds this functionality but for now, it is rejected.
No, it is not possible. See here.
There is no straight way to do this. You could override __nonzero__
for your objects to modify their truth value.
class Truth:
def __init__(self, truth):
self.truth = truth
def __nonzero__(self):
return self.truth
t = Truth(True)
f = Truth(False)
print bool(t and t)
print bool(t and f)
print bool(f and f)