BaseClass:
def some_method():
execute_function = getattr(BaseClass, ‘get_sum’)(1,2)
```
когда я наследуюсь от BaseClass в Child.
class Child(BaseClass):
def get_sum(a, b):
return a + b
BaseClass не может найти функцию get_sum у Child. Как сделать так, чтобы функция вызвалась из Child класса ?
я пробовал отнаследоваться из бейс и переписать метод в чайлд:
```
def some_method():
execute_function = getattr(Child, ‘get_sum’)(1,2)
```
но так мне не нравится, слишком много кода получается.
пробовал с classmethod, работает, но у меня в get_sum cсылки с self.
Последний абзац вообще не понял
Тишка посоветуй где лучше всего сделать регистрацию фильтров? Точнее в какой части кода
что? зачем родитель должен искать метод ребенка
Обычное «создание фильтров»
У него который день нарушение логики
Хз что это. Фасетный поиск?
``` class BaseClass: def some_method(): execute_function = getattr(BaseClass, ‘тут будет название функции из json ’)(1,2) ``` мне нужно реализовать в Child метод с названием из json, пусть будет get_sum. class Child(BaseClass): def get_sum(self, a, b): return a + b таким образом, когда я буду вызывать Child, BaseClass смог вызвать get_sum.
Хуйня какая-то
Базовый класс ничего не знает о дочерних
почему BaseClass что то вообще должен делать
я конечно могу отнаследоваться от Base и переписать метод в Child передав туда название класса Child. Но мне бы хотелось написать только сам метод в Child который поступает из json а getattr смог найти этот метод, либо вынести логику с getattr в другой метод и передавать название класса в Childе. с classmethod работает кстати.
Выкинуть классметод
Где блин self?
1. Почему getattr вызывается не у self? 2. Где валидация допустимых значений имен функции? Что будет если туда передадут __init__ 3. Что делать если код класса поменяется, но захочется сохранить имена в json?
хорошие вопросы, но это следующие пункты. Сейчас нужно решить именно это, я так понимаю кроме переписывания метода в чайлд классе нет других способов? и что значит getattr не вызывается не у self?
значит почему ты первый аргумент getattr - класс, а не экземпляр
действительно, так заработало. Спасибо Тишка)
теперь я понял, что ты имел ввиду self в getattr
логика понятна?
да, теперь понял
Обсуждают сегодня