Как обратиться из родительского класса к static-функции дочернего? Такая у меня возникла задача
Есть абстрактный классclass BaseClass
@staticmetho
def get_prefix()
raise Exception('Переопределите этот метод в дочернем классе'
@staticmetho
def get_string_with_prefix(string='')
return BaseClass.get_prefix() + strin
А вот дочерний класс. В нем я не хочу дублировать логику функции get_string_with_prefix, а хочу лишь переопределить функцию get_prefix, чтобы она возвращала строку, соответствующую моему классу.class ChildClass(BaseClass)
@staticmetho
def get_prefix()
return 'child_class_prefix_
Так например, если я вызову ChildClass.get_string_with_prefix('test'), то, разумеется, вызывается get_prefix у BaseClass'а.
Как мне решить эту задачу?

21 Авг 2019 в 07:08
300 +1
0
Ответы
1

Для того чтобы обратиться из родительского класса к static-функции дочернего класса, можно воспользоваться методом класса. Вот как можно модифицировать ваш код:

class BaseClass
@classmetho
def get_prefix(cls)
raise Exception('Переопределите этот метод в дочернем классе'
@classmetho
def get_string_with_prefix(cls, string='')
return cls.get_prefix() + strin
class ChildClass(BaseClass)
@staticmetho
def get_prefix()
return 'child_class_prefix_
print(ChildClass.get_string_with_prefix('test')) # Вывод: child_class_prefix_test

В этом случае метод get_prefix объявлен как метод класса (@classmethod), а не как @staticmethod. Это позволяет обращаться к методу класса из метода другого класса через параметр cls. Таким образом, при вызове ChildClass.get_string_with_prefix('test') будет использован метод get_prefix дочернего класса ChildClass.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 620 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир