Injecting methods into instance / class
duncan smith
duncan at invalid.invalid
Sun Dec 2 12:56:25 EST 2018
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
More information about the Python-list
mailing list