TGViewer
Лаборатория Математики и Программирования Сергея Бобровского Лаборатория Математики и Программирования Сергея Бобровского @lambda_brain · 1.41K subscribers
Post #1688 959
То знакомое чувство лёгкой грусти, когда возникает очередное противоречие между теоретической моделью обобщённых типов, и их фактической реализацией в Python...

Даже на таком простом уровне, как реализация типа-суммы (дизъюнктное объединение типов- параметров).

class Sum(Generic[T, U]):
def __init__(self, value: Union[T, U], is_left: Optional[bool] = None):


Когда уже сделал реализацию, но решил сэкономить на том, чему активно учишь других, и забил на TDD (или хотя бы "тесты-первыми"). В результате первые же тесты ломаются, после чего тратишь кучу времени на странные баги, а когда добираешься до причины, понимаешь, что всё придётся переписать заново :)

Я совсем забыл, что питончик - это type erasure, когда информация о параметрах типа (T и U для класса Sum[T, U]) стирается во время выполнения...

Тут рекомендуют паттерн Стратегия, но я бы для продакшена делал фабричные методы вроде Sum.left(), которые создают экземпляры Sum с явно заданным значением is_left, что полностью обходит необходимость определения типа во время выполнения.

Но в данном случае (и в ряде существенно более сложных) мне надо будет придумать как сделать абсолютно чистый в математическом смысле интерфейс.
  • ❤ 36
  • 👍 16
  • ✍ 7
  • ❤‍🔥 1
  • 🤯 1
More from @lambda_brain
  1. Oct 5, 2026Мнения экспертов по индустрии разработки игр в целом можете при желании найти сами на ютуб…
  2. Oct 5, 2026Просили пояснить за (M)PF геймдев ↑ Сложно сегодня придумать более сложное бизнес-направле…
  3. Oct 5, 2026. Облако драгоценностей за неделю. скоро зима (с) Приватный клуб. В жизни любого проекта н…
  4. Oct 1, 2026Ребята спрашивают, ну ок, моё скромное мнение. у вас где-нибудь можно прочитать ваше мнени…
  5. Sep 30, 2026Ладно, вот вам база, почему так трудно переучиваться с императивного/объектного стиля коди…
  6. Sep 30, 2026Ну, с Днём Рунета! Многие годы Рунет был эталонным примером свободы, а сегодня превратился…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →