我有一个锅炉板类,它将一些操作委托给参考类。它看起来像这样:
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()
这是参考类:
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
我想使用 Python 元编程来使其更加优雅和可读,但我不知道如何做。
我听说过setattr http://docs.python.org/library/functions.html#setattr and getattr http://docs.python.org/library/functions.html#getattr,我想我可以做类似的事情
class MyClass():
def __init__(self, someClass):
self.refClass = someClass
for action in ['action1', 'action2', 'action3']:
def _delegate(self):
getattr(self.refClass, action)()
然后我知道我需要从某个地方做到这一点,我想:
MyClass.setattr(action, delegate)
我只是无法完全理解这个概念。我了解关于不重复代码以及使用函数式编程的 for 循环生成方法的基础知识,但我不知道如何从其他地方调用这些方法。嘿嘿!