@Maxwell012

Как вызвать метод подкласса в родительском?

У меня есть родительский класс, в котором вызываются методы дочерних классов:
class Profile:
    async def profile(self, message: Message, state: FSMContext) -> None:
        await state.clear()
        profile_handler = SpecialistProfile() if self.is_specialist else UserProfile()
        await profile_handler.profile(message=message, state=state)

2 дочерних класса:
class SpecialistProfile(Profile):
    @staticmethod
    async def specialist_profile(message: Message, state: FSMContext) -> None:
         # code


class UserProfile(Profile):
    async def user_profile(self, message: Message, state: FSMContext) -> None:
         # code

Изначально specialist_profile и user_profile были статическими методами, но сейчас мне нужно передавать экзампляр класса в user_profile то есть self. Я конечно могу убрать наследование и создавать экзмепляры UserProfile() и SpecialistProfile() непосредственно в классе Profile, но в других частях кода я также использую классы юзер и специалист, и не хочется обращаться к этим классам через класс Profile и также не хочется создавать еще дополнительные классы. Буду рад за любые подсказки.
  • Вопрос задан
  • 216 просмотров
Решения вопроса 2
@Everything_is_bad
У меня есть родительский класс, в котором вызываются методы дочерних классов:
Когда родитель должен знать что-то про потомков это ошибка в проектирование, зачем вообще тогда тебе такое наследование? Рекомендую полностью переделать, то что ты натворил.
Ответ написан
Ваша ошибка - пытаться сделать что-то не по шаблону: не придумывайте задачу, лучше хорошо изучите и проработайте готовые примеры из документации или книги и запомните их - это вам поможет, но на это уйдет много времени. В данный момент вы тратите время впустую, т.к. ваш подход некорректен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы