May 25, 2007
7:33 p.m.
Greg, If you do update this PEP, please update the __not__ portion as well, at least regarding possible return values. It currently says that __not__ can return NotImplemented, which falls back to the current semantics. (Why? to override an explicit __not__? Then why not just put the current semantics on __object__, and override by calling that directly?) It does not yet say what will happen for objects that return something else outside of {True, False}, such as class AntiBool(object): def __not__(self): return self Is that OK, because "not not X" should now be spelled "bool(x)", and you haven't allowed the overriding of __bool__? (And, if so, how does that work Py3K?) -jJ