Задать вопрос
dkoldyaev
@dkoldyaev
Отличный парень!

Как обратиться из родительского класса к static-функции дочернего?

Такая у меня возникла задача:

Есть абстрактный класс

class BaseClass:
    @staticmethod
    def get_prefix():
        raise Exception('Переопределите этот метод в дочернем классе')

    @staticmethod
    def get_string_with_prefix(string=''):
        return BaseClass.get_prefix() + string


А вот дочерний класс. В нем я не хочу дублировать логику функции get_string_with_prefix, а хочу лишь переопределить функцию get_prefix, чтобы она возвращала строку, соответствующую моему классу.

class ChildClass(BaseClass):
    @staticmethod
    def get_prefix():
        return 'child_class_prefix_'


Так например, если я вызову ChildClass.get_string_with_prefix('test'), то, разумеется, вызывается get_prefix у BaseClass'а.

Как мне решить эту задачу?
  • Вопрос задан
  • 2340 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
mututunus
@mututunus
Backend developer (Python, Golang)
Используйте @classmethod
class BaseClass:
    @classmethod
    def get_prefix(cls):
        raise NotImplemented('Переопределите этот метод в дочернем классе')

    @classmethod
    def get_string_with_prefix(cls, string=''):
        return cls.get_prefix() + string

class ChildClass(BaseClass):
    @classmethod
    def get_prefix(cls):
        return 'child_class_prefix_'
Ответ написан
Ваш ответ на вопрос

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

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