У меня есть иерархия классов, где __init__
в class Base
выполняет некоторую предварительную инициализацию и затем вызывает метод calculate
. Метод calculate
определен в class Base
, но ожидается, что он будет переопределен в производных классах. Переопределенный calculate
будет использовать некоторые атрибуты, которые доступны только в class Derived
:
class Base:
def __init__(self, args):
# perform some pre-initialization
...
# now call method "calculate"
self.calculate()
class Derived(Base):
def __init__(self, args, additional_attr):
super().__init__(args)
# do some work and create new instance attributes
...
self.additional_attr = additional_attr
Это не сработает, потому что метод calculate
в class Derived
будет вызван до того, как будет назначен self.additional_attr.
Я не могу переместить super().__init__(args)
вызов в конец метода __init__
, потому что некоторая часть работы, которую он выполняет, должна выполняться до обработки additional_attr
.
Что делать?