On Fri, Dec 18, 2020 at 5:02 AM Paul Sokolovsky <[email protected]> wrote:
> This is not some completely new restriction. For example, following
> already doesn't work in Python:
>
> class A:
> pass
>
> o = A()
> o.__add__ = lambda self, x: print("me called")
>
> o + A() # lambda above is never called
>
But the addition operator isn't just calling __add__, so this IS a
completely new restriction. You're comparing unrelated things.
class A:
def __add__(self, other):
print("I got called")
class B(A):
def __add__(self, other):
print("Actually I did")
A() + B()
The operator delegation mechanism doesn't use the class as a means of
optimization. It does it because it is the language specification to
do so.
I said I wasn't going to respond, but this one is SUCH a common
misunderstanding that I don't want people led astray by it. "a+b" is
NOT implemented as "a.__add__(b)", nor as "type(a).__add__(b)"!
Can this thread move off python-ideas and onto pycopy-ideas please?
It's not really talking about Python any more, it just pretends to be.
ChrisA
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/KWNAJHZ4YAT7IHHBHVA6HBQHLKF22HQR/
Code of Conduct: http://python.org/psf/codeofconduct/