Given my silly problems trying to write a class which overwrite logical operations like 'and', 'or' and 'not', which is not possible by now (see the discussion following http://mail.python.org/pipermail/python-dev/2002-October/029122.html ) I would like to propose to extend the PEP 285 to add boolean operations that can be overloaded as the rest of the operations in python. The operations in question refers of course to 'and', 'or' and 'not'. I guess this will involve to add a structure similar to PyNumberMethods or PySequenceMethods, but for boolean methods, something like: typedef struct { binaryfunc bl_and; binaryfunc bl_or; binaryfunc bl_not; } PyBooleanMethods; where the bl_and, bl_or and bl_not methods refer to the boolean operations 'and', 'or' and 'not' of course. This methods will be the one used to implement the corresponding operations, and they could be overloaded by special methods which names could be __land__, __lor__ and __lnot__ to distinguish them from the numeric bitwise versions __and__ and __or__. In the case that there is no logical special methods defined in the class, the bolean methods must behave as they do right now. However, if the user overload them, they could return anything, just like the "rich comparison methods" >=, <=, < and >. Therefore you can write code like this class MyClass: def __land__(self, other): ..... def __lor__(self, other): ..... def _lnot__(self, other): ...... a = MyClass(1) b = MyClass(2) c = MyClass(3) res = a >= b and not (b < c) and 'res' could be anything that in the "MyClass" makes sense. Marcelo
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4