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/