> Python 2.2 (#28, Mar 13 2002, 23:18:18) [MSC 32 bit (Intel)] on win32 > Type "help", "copyright", "credits" or "license" for more information. > >>> coerce > <built-in function coerce> > >>> class ex(object): > ... def __init__(self, v): > ... self.v = v > ... def __coerce__(self, other): > ... return self, ex(other) > ... def __add__(self, rhs): > ... return ex(self.v + rhs.v) > ... def __repr__(self): > ... return 'ex(' + repr(self.v) + ')' > ... > >>> ex(3) > ex(3) > >>> coerce(ex(1),2.3) > (ex(1), ex(2.2999999999999998)) > >>> ex(1).__add__(ex(2)) > ex(3) > >>> ex(1)+2.3 > Traceback (most recent call last): > File "<stdin>", line 1, in ? > File "<stdin>", line 9, in __add__ > AttributeError: 'float' object has no attribute 'v' New-style classes don't support __coerce__. It's a long and sad story, but basically __coerce__ was a mistake, and I've stopped supporting it for new-style classes. This means that the + operator doesn't call __coerce__. For some reason, coerce() still calls it; maybe that was a mistake. --Guido van Rossum (home page: http://www.python.org/~guido/)
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