Где на Девмане ООП?
У нас его нет, потому что обучение у нас на проектах. В обычных рабочих проектах, тех, что выполняют на работе питонистом — оно нужно очень редко. Часто его используют не к месту.
Среди новичков/джунов, а иногда даже мидлов, какое-то странное восприятие ООП как “нового уровня” в программировании. Частично это течёт из других языков, где ООП — основная парадигма программирования: тех же Java и C#. Скорее всего программисты из этих языков, когда переходят в Python, тащат в него привычные подходы программирования.
Питон поддерживает как ООП, так и функциональщину (и ещё пару других подходов). Многие читают это так: “значит можно юзать любую! Мне вот ООП нравится, я на ООП пишу, а раз тебе нравится функциональщина — ну и пиши на ней, а ко мне не лезь”. Но это не так работает.
ООП и функциональный подход – это скорее как молоток и отвёртка. У функциональщины есть свои границы применимости, у ООП – свои. Так же как отвёрткой нельзя забивать гвозди, а молотком – вворачивать шурупы. Делать все на свете операции одним инструментом, который тебе понравился — плохая идея, надо уметь выбирать.
Если урок можно решить на 200 строк функциями, либо написать ту же функциональность, но на 600 строк + огромной древовидной структурой на классах, то выбор очевиден в пользу функций. Наш курс про чистоту кода. Если один пишет на 200 строк простой код, который легко менять, читать и поддерживать — он хорошо поработал. Если другой пишет то же самое на 600 строк, причём теряя в гибкости и усложняя тестирование и поддержку через ООП — поработал он плохо, и мы просим переделать.
Повторюсь, это не значит, что классы – плохие. А то, что они, бывает, не подходят под некоторые задачи. Есть задачи, где хороши функции, и есть где хороши классы.
Короче, чтобы делать курс по ООП, нам нужны задачи, где оно уместно.
Так где оно уместно? Классы – отличное решение для библиотек, например. В том же requests они очень активно используются, response, который ты получаешь от requests.get(...)
– это объект класса Response. Или в Pillow, например, картинка – это объект класса Image
.
С этим ООП ты уже много поработал, а вызов методов (тот же requests.get(...)
) уже давно не выглядит для тебя странным.
С чем ты не работал – это использование ООП во время написания своей библиотеки или даже фреймворка. Но блин, как часто питонисты на работе пишут свои библиотеки? Это очень специфичная задача. Мы думаем сделать такой курс, где вы будете проектировать свою библиотеку, структуру классов и т.д. Но это будет курс совсем не для новичков или даже джунов.
ООП используется в джанге, в моделях и админке. Если ты уже проходишь (или даже прошёл) курс по Django ORM, то ты и там уже с ним базово столкнулся. Там ООП очень специфичное, разработчики Django сильно переиначили его. И именно этим специфичним ООП ты очень хорошо притренируешься пользоваться в курсах по ORM и Django.
Они используются в тестировании, обычно тесты – это методы класса. Эта часть сейчас пропущена в курсе, но восполнить её будет не сложно за 2-3 дня, когда ты пройдёшь курс по Django. Тема не такая уж и большая, чтобы с твоим опытом на тот момент очень быстро понять азы и начать писать тесты.
Они используются для переопределения всяких стандартных штук (кастомное исключение, логгеры) – это есть в курсе по чат-ботам.
Короче. В каждом курсе ты на самом деле используешь ООП, просто ты этого не замечаешь, т.к. явно это не проговаривается. Если какие-то фрагменты ООП в программу не попали – значит, они не были нужны для всех тех проектов, что ты реализуешь по курсу. И тащить его за уши и выдумывать такие экзотические проекты, чтобы оно вдруг пригодилось – не вижу смысла. Зачем учить что-то, что тебе не не пригодилось за всё это время, во всех этих проектах?
Та часть ООП, которую тебе хочется, которую в деле стоит использовать только при проектировании библиотек и фреймворков, тоже будет в курсе. Но она будет там, где тебе реально придётся её использовать: при подготовке к собесам. Вот там тебя на каждом собесе будут спрашивать про полиморфизм, инкапсуляцию и прочие страшные слова. Я использовал эти концепции в своей работе за 5 лет раза три, наверное. Большинство питонистов, насколько я знаю, тоже. Короче, вот как надо будет по собесам ходить – тогда и зазубришь эту теорию, пройдёшь собесы, и сразу же можно будет с чистой совестью всё это забывать.
Печально, что собеседования так сильно оторваны от практики, но что поделать