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

В статье на медиум наткнулся на такой код class IRepository(ABC):

@abstractmethod
def get_all(self):
raise NotImplementedError

а зачем в абстрактном методе что-то рейзить? разве там не многоточие просто ставится?

13 ответов

22 просмотра

Ну, абстрактный метод таки может быть вызван из наследника. Это может быть нежелательно.

чтобы если кто-то вдруг решить вызвать через super() вместо нормальной реализации, у него не получилось

Tishka17
чтобы если кто-то вдруг решить вызвать через super...

Вот это откровенно говоря странное поведение, учитывая возможности множественного наследования.

к слову я лично негативно отношусь к эллипсису как к замене pass в коде

Alex
Вот это откровенно говоря странное поведение, учит...

почему? если дефолтной реализации нет, значит нет и нечег оsuper дергать

Alex
Вот это откровенно говоря странное поведение, учит...

Вроде как считается, что может быть осмысленная реализация, которой просто всегда недостаточно для потомков.

Tishka17
почему? если дефолтной реализации нет, значит нет ...

Потому что ты не всегда можешь знать дернешь ли ты дефолтную реализацию или нет.

Alex
к слову я лично негативно отношусь к эллипсису как...

Мне понравилось его использовать, чтобы разделять методы, которые ничего не делают и абстрактные методы

Tishka17
так если нет дефолтной реализации

так у тебя супер может дернуть не абстрактный метод, а конкретный у соседнего класса.

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта