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

Я могу как-то выдрать тип тайпвара в женерике и использовать

его как порождающий объект?
аля

In [13]: T = t.TypeVar('T')

In [14]: class Some(t.Generic[T]):
...: def foo(self, bar) -> T:
...: return T(bar)
...:

In [15]: Some[int]().foo('bar') -> int

9 ответов

7 просмотров

In [14]: class Some(t.Generic[T]): ...: type_: T ...: def foo(self, bar) -> T: ...: return self.type_(bar) ...: Some(int).foo('bar') -> int А так? __init__ ещё

Саша-Воронов Автор вопроса
Arkady Strugatsky
In [14]: class Some(t.Generic[T]): ...: typ...

оно так полетит? ща попробую

Саша Воронов
оно так полетит? ща попробую

Полетит, если __init__ затайпишь правильно

Type erasure приводит к тому что ты не знаешь параметры дженерика на экземпляре. А вот имея сам дженерик ты конечно модель что-то делать. Но скорее всего тут проще вывернуть наизнанку и вместо Some[int]() Написать Some(int) За счёт автовывода типов будет эквивалентно, но у тебя в ините будет явно ссылка на тип

Саша-Воронов Автор вопроса

если так сделать, выйдет абсолютно неиспользуемая хуйня, потому что я делаю доменные примитивы вида AccountID(“111-11-11”) и конвертеры для них. объяснить другим разработчикам как пользоваться штукой типа SomeID(“11111”, AccountID).to_domain() не представляется возможным

Саша-Воронов Автор вопроса
Tishka17
Не понял

class SomeShittyID(Generic[T]): def __init__(self, id_: str) -> None: self._id = id_ @property def uuid(self) -> T: return encode(self._id) @classmethod def from_domain(cls, value: T) -> typing.Self: return cls(decode(value)) SomeShittyID.from_domain(DomainID('111-111-111')).uuid -> DomainID # but UUID SomeShittyID.from_domain(AnotherDomainID('222-222-222')).uuid -> AnotherDomainID # but still UUID понимаешь о чём я?

Саша Воронов
class SomeShittyID(Generic[T]): def __init__(...

Нет. Не вижу использования T

Саша-Воронов Автор вопроса
Tishka17
Нет. Не вижу использования T

потому что это бессмысленно, пока я явно не передам нужный класс или прибинженные энкодеры-декодеры

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта