14289
Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/1961404
Классная реализация, а зачем async если у тебя всё синхронно работает? 😊
Читать полностью…
конечно, даже с множеством запросов это будет работать и даже выглядеть будет неплохо. Проблему я решу. Но, может, есть специальные паттерны для такого?
Читать полностью…
А, да. Первым делом выкинь "статические классы". Везде должны быть объекты. Подумай нет ли нескольких экземпляров одного класса на самом деле
Читать полностью…
состояние - это сами атрибуты классов, их не так уж и много, но операции, использующие атрибуты - другое дело: они сложные (используют другие операции, в разных вариациях и с нетривиальной логикой) и переопределяются. Именно с операциями проблемы. То есть, проблема банально с select'ами, не с сохранением состояния
Читать полностью…
Выкинь всё и подумай - что является частью состояния системы, а что - лишь вспомогательный код для сохранения его в бд.
Читать полностью…
у меня такая проблема: есть базовый класс и много его потомков, добавляющих и переопределяющих методы. Большинство методов - это геттеры и я думал, что если пойду со стороны написания запросов к БД, то это будет оптимально, но по итогу оказалось наоборот: так как метод может вызывать методы других классов (возможно, переопределенные), а самих классов много, то я вынужден делать слишком много запросов, либо писать суперсложные запросы (сочетающие в себе несколько сложных методов и их переопределения). При этом сами данные образуют дерево и оно может быть очень большим - из-за чего кажется плохим вариантом загрузка агрегатов. Вообще хотелось бы быть ближе к функциональному подходу, но я не вижу, как к этому приблизиться
Читать полностью…
когда ты в профессиональной среде, корректная терминология очень важна, хз почему ты так дефаешься
Читать полностью…
если ты даешь материалы, то формулировки должны быть корректные, что бы человек не учился хуйне и в дальнейшем траблов не имел
Читать полностью…
тебе дают объективные факты о том, почему у этого есть проблемы. Все что ты можешь ответить - это слиться?
Читать полностью…
так твое мнение тоже не твое. Оно соткано из тысяч идей других людей
Читать полностью…
Можешь держать ее для себя сколько хочешь, не надо давать ее как учебный материал
Читать полностью…
Ты просто начал кидать свою хуевую подборку. Я попросил перестать
Читать полностью…
Сервисный слой, проектирование ориентированное на предметную область. Хз что ещё сказать. Кажется ты смешал в одном объекте и логику доступа к данным и логику работы с ними.
Попробуй разделить так:
1. Модель предметной области. Каждый класс содержит только данные и то что может работать непосредственно с данными одного класса. В целом тут можно сделать иерархию но только если прям отношение целое-часть, а не просто связи
2. Код который работает с данными нескольких объектов. Что-то меняет, за чем-то следит
3. Код который умеет загружать и сохранять все
4. Код который умеет менять разные сущности, но так же может их загружать/сохранять с помощью того что выше сделал
я доработал статические классы, добавив менеджер, из которого можно вызвать метод от имени другого класса:
async def select_qualified_name(Читать полностью…
self,
connection: aiosqlite.Connection,
uid: bytes,
) -> str | None:
owning_namespace: ElementRef | None = await self.select_owning_namespace(
connection=connection,
uid=uid,
)
if owning_namespace is None:
return None
name: str | None = await self.select_name(
connection=connection,
uid=uid,
)
owning_namespace_owned_members: typing.Sequence[ElementRef] = await self.manager[
owning_namespace.kind
].select_owned_members(
connection=connection,
uid=owning_namespace.uid,
)
# TODO:
вот пример операции для получения qualified_name для типа Element (базового) (на языке ocl)
qualifiedName =
if owningNamespace = null then null
else if name <> null and
owningNamespace.ownedMember->
select(m | m.name = name).indexOf(self) <> 1 then null
else if owningNamespace.owner = null then escapedName()
else if owningNamespace.qualifiedName = null or
escapedName() = null then null
else owningNamespace.qualifiedName + '::' + escapedName()
endif endif endif endif
name, owningNamespace, ownedMember, owner, escapedName, qualifiedName - это тоже операции, которые для разных типов могут быть разными, то есть, запрос сделать очень сложно с учетом всех переопределений.
Читать полностью…
Попробуй написать приложение так как будто бд просто нет и всё работает магически.
Потом подумай в какие моменты все таки пора сохранить в бд и прикрути туда сохранение
нет, потому что классы не сами в себе, они тесно связаны друг с другом (вызывают методы других)
Читать полностью…
Снова поймали на формулировках от нейронки просто, а он их боготворит
Читать полностью…
а в инструкции к микроволновке надо писать - нельзя греть котов! а то какоай-то дебил вдруг засунет.
Лан, нахрен мне сдалось бороться с тишкиным самодурством.
У меня есть и другие дела
Какие нахрен факты??? Придирки к формулировках? Пусть пособеседует джунов, что они выдают!
Это пздц какой факт
Это не гарантировано. Может не сработать, примеры были
Кароче, нахрен надо. Удачи
Мне плевать даже если его. Просто там реально надо все ревьюить
Читать полностью…