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

Есть у меня абстрактный классовый метод, который наследуется в реализациях

как есть:

class ABCModel(ABC):
@classmethod
@abstractclassmethod
def from_data(cls, data: dict) -> 'ABCModel':
return cls(**dict)

class ConcretModel(ABCModel):
@classmethod
def from_data(cls, data: dict) -> ABCModel:
return super().from_data(data)

И вот здесь меня просто порвало с работы mypy. Это говно откровенно доебался до сигнатуры метода в реализации, выдавая ошибку

Signature of "from_data" incompatible with supertype "ABCModel"

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

9 ответов

40 просмотров

Это магия типов питона, я даже не знаю че ответить ибо я сам до сих пор мучаюсь ведь это настолько тонкое говно что лучше ctypes уже тянуть

Ты бы еще тайпскрипт попробовал

Вообще у тебя как минимум дикт не типизирован, странно что майпай на это не ругается, мб хотя бы dict[Any, Any]

denis
Вообще у тебя как минимум дикт не типизирован, стр...

dict[Any, Any] == dict как по мне должен быть, хотя меня когда-то этот вопрос волновал, но я хуй положил

Tom-Cauf Автор вопроса

class ABCModel(ABC): @classmethod @abstractclassmethod def from_data(cls) -> 'ABCModel': return cls() class ConcretModel(ABCModel): @classmethod def from_data(cls) -> ABCModel: return super().from_data() Вот так выдает то же самое например

Tom Cauf
class ABCModel(ABC): @classmethod @abstrac...

Кстати как оно может вызывать абстрактный метод? Попробуй создать прослойку class Foo(ABCModel) class ConcertModel(Foo)

Tom-Cauf Автор вопроса
Tom Cauf
может. читай документацию

А, ну я почекал PEP8 там разрешено возвращать что либо из абстрактного метода

Tom-Cauf Автор вопроса
rgxNew
А, ну я почекал PEP8 там разрешено возвращать что ...

Ты ведь в курсе, что документация питона пеп8 не ограничена?

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

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

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