On Thursday, June 16, 2016 at 5:37:14 AM UTC+12, 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.
No, that’s fine. Table-driven programming is a good technique, and I’ve done this sort of thing myself. > for fnname, measparam in ( > ... > def measmaker(p): Since this function makes no direct reference to “fnname” or “measparam”, why not move the definition to before the loop so it gets executed just once? > def inner(self, cursorarea=False): > ... > return inner And there, ladies and gentlemen, you see the benefits of functions as first-class objects. :) > setattr(Channel, fnname, measmaker(measparam)) I would follow the loop with a “del fnname, measparam, measmaker", just to avoid polluting your module namespace with leftover debris. -- https://mail.python.org/mailman/listinfo/python-list