Допустим, имеется несколько файлов:
scheme.py
scheme.One.py
scheme.Two.py
scheme.*.py
***
В файле scheme.py объявлен класс Scheme со всеми необходимыми, в общем случае, атрибутами:
class Scheme:
_VAR = 'Common Scheme Class'
def function_common(self):
return 'Function Common'
def function_first(self):
return 'Function First'
def function_second(self):
return 'Function Second'
Для простоты поддержки конфигураций, в файлах, изменяющих поведение класса Scheme, будет примерно следующее:
Файл scheme.One.py:
class Scheme:
_VAR = 'One Scheme Class'
def function_first(self):
return 'Function One'
Файл scheme.Two.py:
class Scheme:
_VAR = 'Two Scheme Class'
def function_second(self)
return 'Function Two'
Такое решение не подходит (классическое наследование):
В файлах-шаблонах (scheme.One.py, scheme.Two.py и т.д.) можно было бы наследоваться от общего класса Scheme со всеми возможно-необходимыми атрибутами и переопределить необходимые, например:
class SchemeOne(Scheme):
_VAR = 'One Scheme Class'
def function_second(self):
return 'Function Seconf Two Scheme Class'
def function_third(self):
return 'Function Third'
Я же хочу, чтобы в каждом файле был класс, именно, с именем "Scheme", для простоты реализации поддержки шаблонов-модулей конечными пользователями. В таком случае, один из методов класса Scheme мог бы обходить все такие файлы и выбрав один для переопределения базового класса (пусть даже, только на основании атрибута _VAR), заменять из него необходимые (присутствующие в выбранном файле расширения) атрибуты в исходном классе Scheme и возвращать итоговый класс.
На StackOverflow мне посоветовали, по-сути, "Фабрику классов"... Что есть хорошо... Но немного другое...
Если я правильно понимаю, мне нужно ручками выдирать атрибуты из одного и пихать их в другой класс - как сделать такой функционал?
Или я изобретаю велосипед? Может кто-то видит эту картину по-другому?