Где на Девмане ООП?

У нас его нет, потому что обучение у нас на проектах. В обычных рабочих проектах, тех, что выполняют на работе питонистом — оно нужно очень редко. Часто его используют не к месту.

Среди новичков/джунов, а иногда даже мидлов, какое-то странное восприятие ООП как “нового уровня” в программировании. Частично это течёт из других языков, где ООП — основная парадигма программирования: тех же 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 лет раза три, наверное. Большинство питонистов, насколько я знаю, тоже. Короче, вот как надо будет по собесам ходить – тогда и зазубришь эту теорию, пройдёшь собесы, и сразу же можно будет с чистой совестью всё это забывать.

Печально, что собеседования так сильно оторваны от практики, но что поделать 😦


Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.