On Thu, Apr 13, 2017 at 5:29 AM, Steven D'Aprano <st...@pearwood.info> wrote: > Should you call dunder methods (Double leading and trailing UNDERscores) > manually? For example: > > > my_number.__add__(another_number) > > > The short answer is: > > NO! In general, you shouldn't do it. > > > Guido recently commented: > > I agree that one shouldn't call __init__ manually (and in fact Python > always reserves the right to have "undefined" behavior when you > define or use dunder names other than documented). > > > so unless documented as safe to use manually, you should assume that it > is not. > > > https://github.com/python/typing/issues/241#issuecomment-292694838
I manually call dunder methods all the time when overriding a special method in a subclass. It's happening all over the place -- thousands and even millions of times in a program. You generally shouldn't call them outside of a class definition -- not because it's inherently bad (though calling __init__ on an already initialized object is weird and probably bad), but because it's bad style and does an end-run around the high-level behavior of the interpreter. -- https://mail.python.org/mailman/listinfo/python-list