Interesting. To allow rich logical operation in this manner, we would need to relax the requirement that ``__bool__`` returns a ``bool``. What negative effects would that have? On Tue, Nov 24, 2015 at 4:24 PM Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
Brendan Barnwell wrote:
On 2015-11-23 22:34, Random832 wrote:
C# allows overloading the short-circuit operators
a and b: a if a.__false__() else a & b a or b: a if a.__true__() else a | b
The problem is that this kind of overriding doesn't handle the main use case, which is elementwise and-ing/or-ing.
Maybe we can hook into __bool__ somehow, though?
Suppose 'a and b' were treated as:
try: result = bool(a) except IDoNotShortCircuit: result = a.__logical_and___(b) else: if not result: result = b
Since a __bool__ call is required anyway, this shouldn't slow down the case where there is no overriding.
-- Greg _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/