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

Что значит разными методами? Ещё раз. Если у нас есть

класс, в котором реализован `def f(self, a: float, b: float) -> float: ..., то он реализует сразу два интерфейса: def f(self, a: float, b: float) -> float: ... и def f(self, a: int, b: int) -> float: ...`, потому что мы можем потомка отдать вместо родительского класса.
На самом деле больше, всякие bool и другие наследники float тоже реализованы, плюс их комбинации.

16 ответов

35 просмотров

Ну не совсем так

evle- Автор вопроса
evle
Что упустил?

/ и * скорее

evle- Автор вопроса
Tishka17
/ и * скорее

Я не планировал в positional/keyword уходить, это вообще отдельная фигня будет.

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

Что некорректного? Сунуть int вместо float можно? Можно. Соответственно, интерфейс мы реализуем.

evle
Что некорректного? Сунуть int вместо float можно? ...

Сорри, мне показалось ты порядок поменял, не проснулся ещё

по сути же, если я реализую f для float-ов, и эта реализация будет поддерживать int в аргументах, то тогда реализация двух разных сигнатур f в протоколе будет совпадать внутри принимающего класса. так что это всё ещё оставляет 2**n по количеству сигнатур. разве нет?

evle- Автор вопроса
kira wave
по сути же, если я реализую f для float-ов, и эта ...

Так, я запутался где-то в середине предложения. Давай ещё раз. :-)

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

Вот у нас есть два интерфейса, можем их даже записать: class A(Protocol): def f(self, a: int) -> float: ... class B(Protocol): def f(self, a: float) -> float: ... Протоколы — разные. Но при этом класс class C: def f(self, a: float) -> float: ... будет реализовывать сразу оба протокола.

evle
Вот у нас есть два интерфейса, можем их даже запис...

тогда считать нужно не по методам одного протокола, а по методам всех существующих в области прртоколов. число всё равно остаётся то же, 2**n, только n это методы всех этих протоколов уже.

evle- Автор вопроса
kira wave
тогда считать нужно не по методам одного протокола...

Вопрос был в том, сколько протоколов реализует класс. Тут был простейший пример, где класс с одним методом реализует 2 протокола. Это уже больше чем 2**n.

evle
Вопрос был в том, сколько протоколов реализует кла...

в отношении одного протокола да, это больше, чем 2**n, но если считать интерфейсы по всем протоколам, то ровно столько и получается.

evle- Автор вопроса
kira wave
в отношении одного протокола да, это больше, чем 2...

Мы так окончательно в терминах запутаемся... Протокол — это описание интерфейса в виде кода. Что значит "считать интерфейсы по всем протоколам"?

evle
Мы так окончательно в терминах запутаемся... Прото...

ох. блять. я без понятия, честно. может, я имел в виду классы, которые содержат протоколы, и их сами.

evle
Вот у нас есть два интерфейса, можем их даже запис...

Как же красив форматированный код в телеге. 😁

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта