Чем или как заменить конструктор? Имеется базовый класс контроллера в конструкторе которого происходит проверка авторизованности пользователя. При создании дочерних классов возникла проблема: Если я в дочерних классах создаю новый конструктор, то он перекрывает конструктор базового класса.
Зачем я пытаюсь использовать конструктор в дочерних классах? - Один из примеров, это создание объекта модели конкретной страницы.
Можно ли как-то заменить конструктор? Или может быть есть вообще какой-то другой способ?

21 Авг 2019 в 07:06
400 +1
0
Ответы
1

В данной ситуации можно воспользоваться методом инициализации вместо конструктора. В базовом классе контроллера создайте метод инициализации, который будет выполнять проверку авторизации пользователя. Затем вызывайте этот метод из конструктора дочерних классов вместо того, чтобы создавать новый конструктор.

Пример:

class BaseController:
def __init__(self):
self.init()
def init(self):
# Проверка авторизации пользователя
pass
class ChildController(BaseController):
def __init__(self):
super().__init__()
def init(self):
super().init()
# Создание объекта модели конкретной страницы

Таким образом, вы сохраняете проверку авторизации в базовом классе, а в дочерних классах вызываете этот метод для выполнения необходимых действий.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир