いくつかのアクションを参照クラスに委譲するボイラー プレート クラスがあります。次のようになります。
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()
これは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
Python Metaprogramming を使用して、これをよりエレガントで読みやすくしたいのですが、方法がわかりません。
setattrと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 ループを使用してメソッドを生成することについての基本は理解していますが、このメソッドを他の場所から呼び出す方法がわかりません。ひーえーぷ!