Bulk Adding Methods Pythonically

Ethan Furman ethan at stoneleaf.us
Wed Jun 15 15:03:20 EDT 2016


On 06/15/2016 10:37 AM, Rob Gaddi wrote:

> I've got a whole lot of methods I want to add to my Channel class, all
> of which following nearly the same form.  The below code works, but
> having to do the for loop outside of the main class definition feels
> kludgey.  Am I missing some cleaner answer?  I thought about just
> checking for all of it in __getattr__, but that's hacky too and doesn't
> docstring nicely. Python 3.4

If I understand correctly:

- you are creating one class (not several similar classes)
- this class has several very similar functions
- you (understandably!) don't want to write out these very
   similar functions one at a time

If that is all correct, then, as Random suggested, move that loop into 
the class body and use locals() [1] to update the class dictionary. 
Just make sure and delete any temporary variables.

Your other option is to put the code in a class decorator.

--
~Ethan~

[1] https://docs.python.org/3/library/functions.html#locals
     Yes, returning the class namespace is a language gaurantee.



More information about the Python-list mailing list