Хочу понять, попадает ли это под понятие «код с душко́м».
Есть базовый класс, у которого список параметров в конструкторе хочется оставить неизменным во всех подклассах, но в них нужно производить некоторую дополнительную инициализацию.
Принято решение вынести её в абстрактный метод, чтобы список параметров конструктора определялся только в одном месте в коде.
class Foo(ABC):
def __init__(self, config: FooConfig):
self.baz = Baz(config.baz_name)
self.cfg = config
self.setup()
@abstractmethod
def setup(self):
"""Переопределяемая часть."""
# ...
class Bar(Foo):
def setup(self):
self.baz.add_something()
# ...
Насколько я знаю, иногда вызов методов из конструктора считают дурным тоном, т.к. объект еще не создан.
Это код из микропроекта (фактически, скрипта), но было бы интересно услышать мнения в целом, когда такое использовать можно, когда лучше не надо, почему не надо и т.д.