класс, в котором реализован `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 тоже реализованы, плюс их комбинации.
Ну не совсем так
Что упустил?
/ и * скорее
Я не планировал в positional/keyword уходить, это вообще отдельная фигня будет.
Что некорректного? Сунуть int вместо float можно? Можно. Соответственно, интерфейс мы реализуем.
Сорри, мне показалось ты порядок поменял, не проснулся ещё
по сути же, если я реализую f для float-ов, и эта реализация будет поддерживать int в аргументах, то тогда реализация двух разных сигнатур f в протоколе будет совпадать внутри принимающего класса. так что это всё ещё оставляет 2**n по количеству сигнатур. разве нет?
Так, я запутался где-то в середине предложения. Давай ещё раз. :-)
Вот у нас есть два интерфейса, можем их даже записать: 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: ... будет реализовывать сразу оба протокола.
тогда считать нужно не по методам одного протокола, а по методам всех существующих в области прртоколов. число всё равно остаётся то же, 2**n, только n это методы всех этих протоколов уже.
Вопрос был в том, сколько протоколов реализует класс. Тут был простейший пример, где класс с одним методом реализует 2 протокола. Это уже больше чем 2**n.
в отношении одного протокола да, это больше, чем 2**n, но если считать интерфейсы по всем протоколам, то ровно столько и получается.
Мы так окончательно в терминах запутаемся... Протокол — это описание интерфейса в виде кода. Что значит "считать интерфейсы по всем протоколам"?
ох. блять. я без понятия, честно. может, я имел в виду классы, которые содержат протоколы, и их сами.
Как же красив форматированный код в телеге. 😁
номера строк поетряются
Обсуждают сегодня