私は数十のクラスを持っています。そのうちの2つは次のとおりです。
class Class_A(ClassABC):
def __init__(self):
super().__init__()
def from_B(self, b):
#do stuff
def from_C(self, c):
#do stuff
#...
def to_B(self):
rt = Class_B()
rt.from_A(self)
return rt
def to_C(self):
rt = Class_C()
rt.from_A(self)
return rt
#...
class Class_B(ClassABC):
def __init__(self):
super().__init__()
def from_A(self, a):
#do stuff
def from_C(self, c):
#do stuff
def to_A(self):
rt = Class_A()
rt.from_B(self)
return rt
def to_C(self):
rt = Class_C()
rt.from_B(self)
return rt
#...
#class Class_C, Class_D, Class_E, etc,
そしてここにABCがあります:
class ClassABC(metaclass=abc.ABCMeta):
@abc.abstractmethod
def __init__(self):
#do stuff
私が抱えている問題はto_*
、サブクラス内のすべてのメソッドがまったく同じパターンに従うことであり、それらを実装するのは面倒になります。できれば自動で生成したいのClassABC
ですが、今のところ失敗しています。サブクラスのクラスデコレータも作成してみましたが、うまくいきませんでした。ただし、exec()を使用して各サブクラスのメソッドを自動生成することができましたが、ABCにメソッドを生成させるか、クラスデコレーターを使用させています。これを行う方法はありますか?
注:すべてのクラスは独自の個別のモジュールにあります