Hello, I have a lot of functions that take an instance of a particular class as the first argument. I want to create corresponding methods in the class. I have tried the following, which (when called from __init__) creates the relevant methods in an instance (Python 3.6).
def init_methods(self): for func_name, method_name in [('add', '__add__'), ('subtract', '__sub__')]: setattr(self, method_name, types.MethodType(globals()[func_name], self)) The problem is that e.g. x.__sub__(y) works as expected, but x - y does not (because special methods are looked up in the class rather than the instance). I have tried to find examples of injecting methods into classes without success. I have tried a few things that intuition suggested might work, but didn't - like removing the first line above, dedenting and replacing self with the class. This is only to save typing and make the code cleaner, but I would like to get it right. Any pointers appreciated. TIA. Duncan -- https://mail.python.org/mailman/listinfo/python-list