bootcd
У каждого класса, делающего такую работу, зачастую, очень разные по сути CRUD методы. ТО есть один такой класс описывает всю возможною работу с сущностью.
А если база данных сменится с изначальной на другую, что ты делать будешь?
Просто ты сам же пишешь про принципы ООП, а каких-то таких вещей не видишь. ООП как раз и применяется, чтобы не зависеть от деталей. Сменилась база данных - похеру, это легко обойти с помощью ООП. А у тебя-то оно вообще фиксируется намертво. Сменилась база данных - новую программу надо писать, всю.
Тебе ООП для чего? Чтобы не чувствовать себя стыдно?
Надо-то применять ООП для того, чтобы получить вот это или получить вот то - получать разные эффекты полезные.
bootcd
Хочется научиться писать хороший код, за который не стыдно, который можно будет далее передать другому человеку на поддержку или развитие.
Ну вот ты классов понаписал с красивыми названиями, передал этот код человеку, а у него ситуация - сменилась база данных. Он так тебя вспоминать хорошо будет, будет думать “какой хороший программист это сделал, соблюл все ООП-принципы, такой молодец!”. Да ему будет вообще не весело! и он просто проклинать тебя будет, и себя, и всех окружающих. Досталась ему “умная” параша, с которой сделать ничего нельзя.
А что касаемо учёбы - как этому всему научиться - надо, во-первых, уяснить для себя, что ООП - это не совсем то, что тебе говорят всякие молокососы в видео на YouTube. Оно существует, но это серьёзная тема. И она нихера не для новичков. Это не то, что говорят на YouTube. Это тяжёлая хреновина. Во-вторых, тебе надо сначала пройти уровни до ООП, потому что ООП - это дополнение, а не замена. Если ты не знаешь, как битовые операции выполнять, например, то никакое ООП за тебя их не будет выполнять. Тебе всё так же придётся их выполнять, даже в ООП. Это часто является открытием таким неожиданным для всяких этих молокососов двадцатилетних. Как так?! это что, мне нужно математику вспоминать за третий класс?! а я не помню, я ЕГЭ не сдал, оно сложное, для гениев прямо! И в-третьих, большинство языков не реализует ООП полностью, поэтому ты не можешь полагаться на синтаксис языка, чтобы выразить всё. В ООП есть интерфейсы, а в питоне их нет. В ООП есть множественное наследование, а в Java его нет (хотя Java ближе всего туда по сравнению с другими языками), а в C++ вообще нихера нет, надо вообще всё в голове держать, смотря на эти обрывки кода разрозненные. Поэтому язык, который записан везде как ООП-язык, никак тебе не поможет понять и узнать ООП. Большую часть всего тебе нужно будет держать в голове при любой разработке. Поэтому ООП изучается отдельно от языков, потому что оно полное, а в языках то этого нет, то вот этого нет, то ещё чего-нибудь нет.
Так что то, что ты можешь в питоне классы делать и их объекты инстанциировать, и это всё типа является сутью ООП, - это твоё личное заблуждение. Поэтому у тебя ничего и не складывается. Ты просто модули с функциями записал в виде объектов с методами. А ООП от этого не появилось. Ты его не умеешь делать. Это учиться надо.
Давай так: провёл ли ты декомпозицию на объекты, перед тем как вообще классы затрагивать? Сначала нужно выяснить, какие объекты есть и что они делают, когда всё это работает. Это ещё никаких классов нет. Потому что где-то нужно допридумать объекты, где-то их разделить на части (на другие объекты), где-то их соединить (слить в один объект или агрегировать, собрав в одном объекте, не разрушая их границ и не лишая их состояний). Когда у тебя объекты все установлены и функционируют, образуя работающие механизмы, тогда ты думаешь над классами этих объектов - как всю эту массу объектов разбить на отдельные классы по общим признакам. Классы потом тоже нужно увязывать в отношения, чтобы сохранять целостность и компактность программы, устойчивость к изменениям и нововведениям.
Ну вот такое всё.