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

А можно этот код как-то более грамотно переписать? @dataclass class BaseEvent:

action: str

@dataclass
class GenesUpdated:
action: Literal["genes_updated"] = "genes_updated"

16 ответов

17 просмотров

А BaseEvent будет использоваться где-то сам по себе или только его наследники? Если нет, то зачем ему декоратор?

Tishka17- Автор вопроса
Arkady Strugatsky
А BaseEvent будет использоваться где-то сам по себ...

не будет, только наследники, я хочу зафиксирвоать что везде action нужен

GenesUpdated это наследник BaseEvent что ли?

Обновление генов? Надеюсь все кролики целы

Tishka17
не будет, только наследники, я хочу зафиксирвоать ...

Что-то такое в голову пришло, но это из разряда эзотерики имхо T = TypeVar('T', bound=str) class BaseEvent(generic[T]): action: T @dataclass class GenesUpdated(BaseEvent[Literal["genes_updated"]]): action = "genes_updated"

T = TypeVar('T') @dataclass class BaseEvent(Generic[T]): action: T @dataclass class GenesUpdated(BaseEvent[Literal['genes_updated']]): action: Literal['genes_updated'] = "genes_updated" Так мб?

А у тебя action'ы берутся не из enum'а?

Виктор
T = TypeVar('T') @dataclass class BaseEvent(Gene...

action: Literal['genes_updated'] = "genes_updated" Тут тайпхинт не нужен

Tishka17- Автор вопроса
Arkady Strugatsky
Что-то такое в голову пришло, но это из разряда эз...

>>> vars(GenesUpdated()) {} >>> fields(GenesUpdated) () не, не работает, нужен хинт все равно

Tishka17- Автор вопроса
Виктор
T = TypeVar('T') @dataclass class BaseEvent(Gene...

три раза genes_updated это перебор

Tishka17- Автор вопроса
Tishka17
м?

Ну что-то такое class BaseEvent: action: ActionEnum @dataclass class GenesUpdated(BaseEvent): action = ActionEnum.genes_updated

Tishka17- Автор вопроса
Arkady Strugatsky
Ну что-то такое class BaseEvent: action: Acti...

тогда при добавлении нового наследника мне надо общий Enum править. Типичное нарушение OCP

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

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

Ребят в СИ можно реализовать ООП?
Николай
32
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем доброго вечера. Разрабатываю 32 раз. приложение в Delphi. Столкнулся с тем, что стандартный  TFilestream  не работает с большим файлом > 2 ГБайт (после вызова функции see...
Vadim Gl
16
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
народ, плиз хелп, всю голову сломал себе уже... разве может быть так, что GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" ) вернёт ненулевое значение...
Iluha Companets
12
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Кстати, что за тип булеана, который в памяти как 00 для фолса и 01 для тру отображается? Однобайтовый
Serjone
8
ребят подскажите почему матрица не транспонируется? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> #include <locale.h> #define N 7 int main() { int...
† C E †
1
Карта сайта