170 похожих чатов

Есть base class, там метод ,а в методе есть: ``` class

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.

22 ответов

18 просмотров

Последний абзац вообще не понял

Tishka17
Последний абзац вообще не понял

Тишка посоветуй где лучше всего сделать регистрацию фильтров? Точнее в какой части кода

что? зачем родитель должен искать метод ребенка

Alex
что за фильтры?

Обычное «создание фильтров»

Aile
что? зачем родитель должен искать метод ребенка

У него который день нарушение логики

🎱- Автор вопроса
Tishka17
Последний абзац вообще не понял

``` 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.

Хуйня какая-то

🎱
``` class BaseClass: def some_method(): ...

Базовый класс ничего не знает о дочерних

🎱
``` class BaseClass: def some_method(): ...

почему BaseClass что то вообще должен делать

🎱- Автор вопроса

я конечно могу отнаследоваться от Base и переписать метод в Child передав туда название класса Child. Но мне бы хотелось написать только сам метод в Child который поступает из json а getattr смог найти этот метод, либо вынести логику с getattr в другой метод и передавать название класса в Childе. с classmethod работает кстати.

Где блин self?

1. Почему getattr вызывается не у self? 2. Где валидация допустимых значений имен функции? Что будет если туда передадут __init__ 3. Что делать если код класса поменяется, но захочется сохранить имена в json?

🎱- Автор вопроса
Tishka17
1. Почему getattr вызывается не у self? 2. Где вал...

хорошие вопросы, но это следующие пункты. Сейчас нужно решить именно это, я так понимаю кроме переписывания метода в чайлд классе нет других способов? и что значит getattr не вызывается не у self?

🎱
хорошие вопросы, но это следующие пункты. Сейчас н...

значит почему ты первый аргумент getattr - класс, а не экземпляр

🎱- Автор вопроса

действительно, так заработало. Спасибо Тишка)

🎱- Автор вопроса
Tishka17
Где блин self?

теперь я понял, что ты имел ввиду self в getattr

🎱- Автор вопроса
Tishka17
логика понятна?

да, теперь понял

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта