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 ответов

10 просмотров

Это магия типов питона, я даже не знаю че ответить ибо я сам до сих пор мучаюсь ведь это настолько тонкое говно что лучше 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 не ограничена?

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

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

получается, что он находит одинаковое колво тегов, с разными именами, или я что тто не понял в таксоупе ?
Fedor
46
вот такое это из хаскеловской или никсовой ситуации ? пока мне сложно отличить, может кто понимает last 10 log lines: > Running phase: updateAutotoolsGnuConfig...
Fedor
18
Снова я с выводом номера вхождения подстроки в строку. Исправил код, номер элемента, с которого начинается подстрока в строке, выводит, но неправильно. Подскажите, пожалуйста,...
Ыиу
2
@dt0W3s1yQE75Mew ну чё как чувствуешь себя здесь бот? запомни тупое ты чучело - в ассемблере нету тянок
.
18
#include <stdio.h> base( int size_2, int size_1, int ar_1[], int ar_2[][size_2] ){ int cm,im; int ar_3[size_2]; for(int num = 0; num <size_2; num++ ) { ...
Behemoth cat
11
а вот так если по инструкции выше Y % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total ...
Fedor
7
а вот вопрос куда копать не понимаю, вроде работает функция, но возращает странное take 1 ategs [TagBranch "a" [("href","/?sa=X&ved=0ahUKEwiQ7Pbhzs6FAxURBNsEHVRuDAgQOwgC")] [...
Fedor
6
Вопрос, не ставиться haskus-utils-variant (>=3.3 && <3.4) - говорит битый пакет под никсом, есть у кого мысли как чинить ?
Fedor
16
Доброго времени! Есть ли в Lazarus заклинания повышающие точность double? function Distance( constref pt0,pt1:TDVec2 ):double; var cp,st:TDVec2; sin_sr1,sin_sr2, ...
Александр Смоляков
3
ого, прикольно, а что пишешь?
CodWiz | Серёжа by CodWiz
32
Карта сайта