On Sun, May 14, 2017 at 01:33:32PM +0200, Antoine Rozo wrote:
> Also, how do you handle special methods for operators, such as __add__?

Oh, that's a good point! I forgot about that.

For implementation-dependent reasons, you couldn't use this proposed new 
syntax for dunder methods:

def MyClass():
    self = subclass(Parent)

    def my_method(arg):
       ...
    self.my_method = my_method

    def __str__():
        ...
    self.__str__ = __str__

    return self

obj = MyClass()
obj.my_method(123)  # okay
obj.__str__()  # works, but bad style
str(obj)  # doesn't work in CPython

Because of the implementation, str(obj) would NOT call __str__ in 
CPython, although I think it would in IronPython. I'm not sure about 
PyPy or Jython.


(CPython "new style classes" only call __dunder__ methods when they are 
defined on the class, or a superclass, not when they are in the instance 
__dict__.)
    


-- 
Steve
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to