A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2002-April/023425.html below:

[Python-Dev] Problems with new-style classes and coercion

[Python-Dev] Problems with new-style classes and coercionGuido van Rossum guido@python.org
Mon, 22 Apr 2002 12:47:06 -0400
> 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