On Fri, Dec 18, 2020 at 5:02 AM Paul Sokolovsky
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