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

Скажите, а есть какой-то адекватный способ в питоне сделайт тайпхинт

на литералы?
Ну типа у меня есть датакласс

@datalass(frozen=True)
class FOO:
BAR: str = 'BAR'
ABC: str = 'ABC'


и я хочу в функцию передавать

def qwe(data: str):
print(data)

qwe(FOO.BAR)


Вот хочется чтобы вместо data: str - былая какая-то балалйка которая позволяет сказать что это один из аттрибутов датакласса.

Первое что приходит в голову это енум, но там есть подводные с тем что нужно будет брать не просто FOO.BAR, а FOO.BAR.value если я захочу передать именно значение, что-то сходу решение не придумывается

12 ответов

25 просмотров

ты же понимаешь что сейчас у тебя можно сделать FOO(BAR="qwe", ABC="xxx")? И собственно для этого датаклассы сделаны

Avonar- Автор вопроса
Tishka17
ты же понимаешь что сейчас у тебя можно сделать FO...

дак а что это меняет? ну можно, и чо? ему же инстанс никто не будет крафтить никогда, это просто способ организовать все возможные значения в одну структуру, по сути енам, но с фичами датакласса т.е. я же могу сделать вот так

Avonar
дак а что это меняет? ну можно, и чо? ему же инста...

это применение датакласса не по назначению. Датакласс нужен для того тчобы у него создавали инстансы хранящие данные

Avonar
дак а что это меняет? ну можно, и чо? ему же инста...

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

Avonar
дак а что это меняет? ну можно, и чо? ему же инста...

конкретно тут у тебя согласно тайпхинтам BAR - это атрибут экземпляра FOO, хранщий произвольную строку

>>> class A(str, Enum): ... x = "x" ... def __repr__(self): return self ... >>> A.x x

Avonar- Автор вопроса
Avonar- Автор вопроса
Tishka17
это применение датакласса не по назначению. Датакл...

вообще вроде как вполне нормальный способ их так юзать, все кому показывал такой подход воспринимали хорошо

Avonar
also, эту же проблему решает init=False

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

Avonar- Автор вопроса
Tishka17
Какую?

ну с тем что можно инитить со значениями своими, хотя не понимаю зачем

Avonar- Автор вопроса
Tishka17
>>> class A(str, Enum): ... x = "x" ... def ...

вообще почему бы и нет, выглядит разумно, спасибо

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

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

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