У меня несколько десятков классов. Вот два из них:
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,
а вот и азбука:
class ClassABC(metaclass=abc.ABCMeta):
@abc.abstractmethod
def __init__(self):
#do stuff
Проблема, с которой я столкнулся, состоит в том, что все методы to_*
в подклассах следуют одному и тому же точному шаблону, и их реализация становится утомительной. Я хотел бы автоматически сгенерировать их в ClassABC
, если это возможно, но пока что мне это не удалось. Я также попытался создать декоратор класса для подклассов, но это тоже не сработало. Мне, однако, удалось автоматически сгенерировать методы в каждом подклассе, используя exec (), но я предпочел, чтобы ABC генерировал их или использовал декораторы класса. Есть ли способ сделать это?
Примечание: все классы находятся в отдельном модуле