The first barrier is that 'or' and 'and' get compiled down to jump
codes, as opposed to operations:
[snip disassembly>]
....so you'd be hacking a completely different section of the compiler to
enable such overriding.
I wasn't yet planning to hack *any* part of the compiler :)
As far as I can see, the compiler changes would be limited to
compiling "a and b" to bytecode equivalent to
a.__logand__(lambda b: b)
And bool.__logand__ would work like this:
def bool.__logand__(self, otherlambda):
if not self:
return False
else:
return bool(otherlambda())
I believe this would handle the short-circuiting. How much
implementation this would require is something I don't know the answer
to yet... I've only just started looking at the python source. At the
least it'd mean compiler changes, but probably also changes to a
number of built-in objects.