I have a boiler platey class that delegates some actions to a reference class. It looks like this:
class MyClass():
    def __init__(self, someClass):            
        self.refClass = someClass
    def action1(self):
        self.refClass.action1()
    def action2(self):
        self.refClass.action2()
    def action3(self):
        self.refClass.action3()
This is the refClass:
class RefClass():
    def __init__(self):
        self.myClass = MyClass(self)
    def action1(self):
        #Stuff to execute action1
    def action2(self):
        #Stuff to execute action2
    def action3(self):
        #Stuff to execute action3
I'd like to use Python Metaprogramming to make this more elegant and readable, but I'm not sure how.
I've heard of setattr and getattr, and I think I could do something like
class MyClass():
    def __init__(self, someClass):            
        self.refClass = someClass
    for action in ['action1', 'action2', 'action3']:
        def _delegate(self):
            getattr(self.refClass, action)()
And then I know I need to do this from somewhere, I guess:
MyClass.setattr(action, delegate)
I just can't totally grasp this concept. I understand the basics about not repeating code, and generating the methods with a for loop with functional programming, but then I don't know how to call this methods from elsewhere. Heeeelp!
 
     
     
    