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

Использую flash-сообщения с категориями. Следующие значения являются рекомендуемыми: message, info,

warning, error.

Как лучше всего хранить эти строки?

Моё решение:
В модуле const.py я создал класс FlashCategories, у которого определил одноимённые поля с соответствующими значениями:

class FlashCategories:
message = "message"
info = "info"
...


И теперь, в app.py я могу обращаться к этим значениям следующим образом:
flash(const.FlashMessages.something, const.FlashCategories.something)
В примере выше something заменяется на необходимое поле соответствующих классов.
Как видно из примера, содержимое сообщений я передаю аналогично. Насколько хороша такая практика? Есть ли в питоне что-то, что более подходит под этот случай? По сути, FlashMessages/FlashCategories это своеобразные дата-классы, но за одним исключением, что они статичны, нет динамики в их изменении, а причина их использовать довольно банальна - вынос строковых литералов из роут-веток, чтобы их содержимое не мешало анализу логики, и повторные использования одного и того же содержимого/категории в разных местах.

Ещё раз обозначу вопрос: насколько хорошим является подход хранения через класс? Есть ли что-то лучше?

6 ответов

58 просмотров

Лучше енумы

Xineo- Автор вопроса
Айван
Лучше енумы

Понял, спасибо огромное!

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

Здесь есть 1 момент: использование enum заставляет указывать .value у каждого поля, как это обойти?

Xineo
Здесь есть 1 момент: использование enum заставляет...

Не обязательно, и можно переопрежелить чтоб такого не было

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта