Без классов и ООП твой Python код - буээээ. Ну... Или нет?

  Рет қаралды 47,021

Диджитализируй!

Диджитализируй!

Күн бұрын

Пікірлер: 166
@t0digital
@t0digital 3 жыл бұрын
Отрывок из вчерашнего стрима с код ревью по курсу to.digital/course01oop. Если в твоём Python коде нет хотя бы одного малюююсенького классика, отнаследованного от чего-то, то скорее всего твой код - го... оставляет жалеть лучшего. ООП - наше всё! Паттерны! Отцы не зря книжки писали! Задротство! Java! Аууууф! Ну... или нет?
@brenkovd
@brenkovd 3 жыл бұрын
Ну а как в питоне с сопровождением кода без классов? без устранения дублирования и все такое? безопасность доступа к глобальным данным? без ООП думаю проще прострелить себе ногу))
@t0digital
@t0digital 3 жыл бұрын
@@brenkovd проект на 100 строк без ООП сопровождать легче, чем проект на 150 строк с ООП, в котором автомобиль наследует глобус:) не надо ООП ради ООП
@brenkovd
@brenkovd 3 жыл бұрын
Не ну 100 строк кода я не спорю)
@dmytroparfeniuk2670
@dmytroparfeniuk2670 3 жыл бұрын
@@brenkovd Я бы сказал, что здесь больше не то что лучше и что хуже в концептуальном виде. В целом наверное более правильно было бы сказать, что не стоит прибегать к какой то одной парадигме в коде, а использовать смешанный подход. Лично я поклонник ООП НЕ НА БОЛЬШЫХ проектах, а на проектах, где в целом объектная иерархия имеет смысл и место. Но в то же время не вижу смысл переусложнять код классами там, где достаточно обойтись модулями и ф-цими.
@nikitaderyushev7555
@nikitaderyushev7555 3 жыл бұрын
Полностью с вами согласен, с опытом приходит понимание того, что ООП как парадигма не натягивается на предметную область в 99% приложений, рано или поздно на большом проекте об него обжигаешься и начинается сущий ад только ради того чтобы сохранить ООП в чистом виде и solid'ом присыпать Не зря сейчас глобальный тренд на отказ от объектной парадигмы даже я ЯПах (тот же изначально ООПшный C# становится все больше функциональным, завезли pattern matching, records, ну а их LINQ это вообще лучшее что я видел) Сама идея ООП конечно хорошая, вот только чтобы нормально жить из него надо навсегда выбросить наследование Пишите больше чистых функций на иммутабельных типах, пацаны :)
@amigo4884
@amigo4884 3 жыл бұрын
Слежу за вашим каналом уже давно. Очень нравится подача контента. Продалжайте в том же духе, жду видосы по линукс
@F345-u7t
@F345-u7t 3 жыл бұрын
*продолжайте
@savel2work
@savel2work 3 жыл бұрын
Автор всё больше и больше становится похож на преподавателя. И всё меньше - на того весёлого беззаботного чувака, с которого начался этот канал) Но должен отдать должное - преподаватель из него знатный.
@t0digital
@t0digital 3 жыл бұрын
На этом отрывке третий час стрима просто:) веселость и беззаботность наше всё:)))
@olegssh6452
@olegssh6452 3 жыл бұрын
Преподаватели должны брать пример с таких как Алексей. В моём опыте только один человек есть, который преподаёт на таком же уровне - Тимофей Хирьянов из МФТИ. Вообще настоящих учителей по пальцам можно пересчитать!
@savel2work
@savel2work 3 жыл бұрын
@@olegssh6452, чот тоже Хирьянова вспомнил, да.
@eliasg5536
@eliasg5536 3 жыл бұрын
@@t0digital А где фул стрим посмотреть?
@t0digital
@t0digital 3 жыл бұрын
@@eliasg5536 это был код ревью одного из финальных заданий на курсе, запись доступна тем, кто тоже выполнил это задание:)
@markus8354
@markus8354 Жыл бұрын
Здравствуйте, смотрю вас давно года 4 уже, вы отличный учитель и материал у вас всегда интересный. Спасибо вам за труд!
@t0digital
@t0digital Жыл бұрын
Спасибо!
@ДмитрийБорисов-ъ3щ
@ДмитрийБорисов-ъ3щ 3 жыл бұрын
Поддержу всех тех, кто восхищается как Алексей умеет доносить информацию! Алексей, спасибо за труды!
@palomares.webador
@palomares.webador 3 жыл бұрын
Круто начали. Но как-то внезапно закончили :-) Только начали разгоняться про ООП, и бамм, стоп. Просим продолжения
@eamarc
@eamarc 3 жыл бұрын
В этом случае можно не трогать ООП, а предъявить за архитектуру: Request - объект транспортного слоя, Person - модель, бизнес логика. Смешивать их просто опасно, а наследовать вовсе уже за гранью добра и зла.
@suhanoves
@suhanoves 3 жыл бұрын
Мне кажется про ассоциацию стоило рассказать поподробнее, показать, что бывает агрегация и композиция и чем они отличаются. Думаю на подобном практическом примере это бы действительно стало понятно новичкам. А то основные принципы всегда на слуху, а чуть дальше никто не знает. Для тех кто хочет почитать подробнее есть прекрасная заметка на Хабре: «Наследование, композиция, агрегация» Лайк за просвещение в любом случае!
@delir0
@delir0 3 жыл бұрын
Посыл правильный, но в таких посылах ВСЕГДА нужно делать оговорку, что "не писать ООП" != "не писать классы". В питоне нет способа определить непримитивный тип данных никак кроме класса (аналог record/struct в других языках), поэтому писать классы НУЖНО даже если писать ООП не нужно - чтобы определять данные и типизировать их. Поэтому писать классы НУЖНО всегда. Например, с помощью pydantic/attrs+cattrs или на крайний случай dataclasses Иначе новички принимают за аксиому утверждение "ООП не нужно" как "классы не нужны" и появляются тонны неподдерживаемой лапши из словарей, с которыми вообще невозможно работать, особенно если словари идут извне по API внутрь бизнес-логики. Особенно, когда по дороге они частично модифицируются.
@t0digital
@t0digital 3 жыл бұрын
согласен
@julybikes
@julybikes Жыл бұрын
Спасибо, очень полезное видео. Подскажите, что за плагин, который подсказывает ошибки? Могли бы вы снять видо про полную настройку Sublime text для Python? Заранее спасибо!
@nanouasyn
@nanouasyn 3 жыл бұрын
что это за красные подсказки об ошибках в vim? как такое сделать?
@t0digital
@t0digital 3 жыл бұрын
это настроенная интеграция для питона, расскажу в одном из видео. Здесь neovim + pyright lsp сервер
@amigo4884
@amigo4884 3 жыл бұрын
Спасибо на будущее! Тоже заинтересовала тема с вимом :)
@dmytroparfeniuk2670
@dmytroparfeniuk2670 3 жыл бұрын
​@@t0digital Использую такое же. Есть вопрос. Я настраивал ЛСП + pyright, но там есть один момент с чтением из модулей, где есть __all__. Увидил в Джанго: from django.db import models -> у нас представляет модуль для работы с моделями. Есть from django.contrib.gis.db import models -> он использует __all__ для импорта всего из дефолтного моделс. в NeoVIM + LSP (pyright) это не читается. Можешь помочь с этим ?
@t0digital
@t0digital 3 жыл бұрын
А как воспроизвести проблему? Те 2 импорта, что ты привел - у меня отработали ок, ошибок не подсвечивает
@ruslangabitov5202
@ruslangabitov5202 3 жыл бұрын
"АМОЖНА?" в авторизационном запросе -- это 5!
@ak4nv
@ak4nv 3 жыл бұрын
А чо? НОРМАЛДЫКС! 🤷
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
Полностью совсем согласен. Но как все таки принять правильное решение - писать проект/модуль в ООП стиле или в процедурном? И что думаешь на счет смешивания данных подходов?
@t0digital
@t0digital 2 жыл бұрын
Смешивать можно. Где классы не нужны - там их и не надо. Классы надо, где набор данных есть и набор методов, которые эти данные обрабатывают. Если есть функции, которые требуют единой инициализации - можно упаковать их в класс. Если функции вызывают друг друга и передают друг в друга по цепочке данные - значит они явно связаны этими данными и их тоже можно упаковать в класс, а данные в self вместо того, чтобы по цепочке передавать. Если есть какой-то набор функций, которые не связаны друг другом набором данных, которые они обрабатывают, не связаны логически, не требуют единой инициализации (через конструктор), то и а незачем паковать их в класс. Если в классе набор тупо статических методов - аналогично нет смысла в классе. И полезно про принципы solid почитать, про единую ответственность и тп. А то совсем разную логику в класс понапихают, лишь бы ООП был)
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
​@@t0digital да, я с такими классами сталкивался, в последнем проекте был класс на 5000 строк и более 200 методов, и они логически слабо связаны между собой. Решил переписывать проект с нуля, потому что было с кодом очень тяжело работать, и тем более править там чужие баги. С рекомендациями выше полностью согласен, я так же мыслю, но сомневался правильный ли у меня подход, что у меня где-то классы, где-то все на функциях в рамках одного проекта, в какой-то книге читал, что это не правильно, и все время кажется, что кто-нибудь будет критиковать, если увидит :)
@t0digital
@t0digital 2 жыл бұрын
@@xcxc-iu3rb я не вижу проблем в том, что что-то не упаковано в классы, а что-то упаковано. Ну вот, например, есть функции форматирования строк. Одна русские существительные склоняет, другая ФИО собирает с опциональным отчеством, третья даты или ещё что-то. Собирать их в класс незачем. Задача похожа, но данные разные. Преимуществ от сборки их в класс не получим, да и логику нарушим. Но это не мешает там в проекте, где классы нужны, их использовать
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
@@t0digital а стоит ли упаковывать в классы ради наследования? Или просто импортировать функции, которые хочу переиспользовать? Но если там функций 200 штук и 20 из них надо переписать?
@t0digital
@t0digital 2 жыл бұрын
@@xcxc-iu3rb наследование вообще штука сложная. Часто люди не втыкают в то, как можно наследовать и наследуют автомобиль от колеса или колесо от автомобиля. Вместо использования композиции - автомобиль использует или содержит колесо. Наследовать надо, когда отношение классов строго «является». Отнаследовать хомяка от животного допустимо, тк хомяк является животным. А колесо не является автомобилем и автомобиль не является колесом. Ладу калину можно отнаследовать от автомобиля, и какие-то конкретные колеса можно отнаследовать от базового какого-то колеса, возможно абстрактного или интерфейса. А ещё протоколы сейчас есть в питоне, неявные интерфейсы. Вопрос про переписать функции не понял, тут надо сценарий смотреть конкретный.
@VadimGlazov
@VadimGlazov 3 жыл бұрын
Вообще классы это типы данных. И если например с типом "числа" мы знаем что делать с детства, то абстрактный тип (класс) может описывать произвольную неведомую фигню, поэтому туда принято вписывать и то как с этой фигней можно что-то делать. А потом да, нахуевертили в обе стороны: и вызовы методов других классов, и этические нормы SOLID, которые вовсе необязательны. Между тем, идея суперкласса оказалась настолько живуча и эффективна, что теперь придумали сущности.
@leonidzimin2419
@leonidzimin2419 3 жыл бұрын
Видно что накипело. Терпения Вам) котанам "Чистый код" обязательно к прочтению, 2 раза!
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
"Cовершенный код" тоже must read книга
@parvizyuldashev4668
@parvizyuldashev4668 3 жыл бұрын
Крутой канал. Спасибо за видосы. Код на писан на Vim?
@t0digital
@t0digital 3 жыл бұрын
Спасибо! У меня в видео neovim, да
@alexandreabramtsev9160
@alexandreabramtsev9160 3 жыл бұрын
Да. однозначно композиция. Только я бы не внутри Person создавал Request, а передавал бы его готовым в инит. Зачем? - это облегчит написание тестов для Person, когда там можно передать некий фейковый Request, или mock запроса. Видео однозначно лайк
@sergiyr9152
@sergiyr9152 3 жыл бұрын
а что за питон плагин в виме? Выглядит интересно...
@t0digital
@t0digital 3 жыл бұрын
Это pyright lsp сервер, расскажу в следующих видео
@ruservices
@ruservices 3 жыл бұрын
Дружище, подскажи пожалуйста, горю!!! Установил ubuntu18.04 на vds. Так же установил PostgreSQL, Nginx и Gunicorn. Делал все по статье, так как сам .. Ну и поднял сайт на django. Все работало классно. Оставалось только привязать доменное имя. В настройках nginx изменил ip на домен и все полетело. Теперь и по ip и по домену открывается заглушка html nginx. Подскажи плз что делать? Назад на ip менял но уже не помогает(
@sidorovich21101986
@sidorovich21101986 3 жыл бұрын
Блин, этот код уже буээээ и дело тут не классах, а в том, что сложно понять, что там происходит. Код не читается, как книга. К примеру, if (data.decode().split(' ') ... === 'можна') - что это за выражение слева? Там должна быть переменная с понятным именем, иначе мне не понятно, что именно "можна". А в аргументах функции не указан тип переменной - у меня это вызывает дискомфорт, поскольку я не понимаю, с каким типом данных имею дело (и моя IDE тоже этого не понимает и будет молчать, если что-то не так). Методы слишком длинные, их нужно разбить на более простые понятные методы, а то приходится несколько раз перечитывать код, чтобы понять, что происходит (даже на таком, казалось бы, простом абстрактном коде).
@kirillzh4798
@kirillzh4798 3 жыл бұрын
Посоветуй курсы где из новичков тимлидов делают по чистоте кода? Или это по праву рождения только передаётся?
@sidorovich21101986
@sidorovich21101986 3 жыл бұрын
@@kirillzh4798 Курсы - слишком долго. Есть книжки, которые так и называются "Чистый код". Чистый код приходит с опытом, но с книжкой быстрее и потом ещё быстрее, когда тебя поправляют, что здесь так должно быть, а там - вот так, потому что-то ... . А, вообще, идеального кода не существует, он только может быть лучше, чем твой предыдущий. И мой код не идеален, он лишь выполняет поставленную задачу.
@mnik0128
@mnik0128 3 жыл бұрын
Видео начинается: "не ладненько" Видео кончается: "ладненько"
@КалёнаяСталь
@КалёнаяСталь 3 жыл бұрын
А можно екскурс в ООП, а то я пользуюсь и оно такое мифическое, не знаю что правильно делаю, а что нет
@КириллЧе-я5ы
@КириллЧе-я5ы 11 ай бұрын
Реализация request - самая простейшая это словарь, а не имя и все такое… имхо… хотя вообще такая себе сущность… скорее напоминает действие нежели класс
@VzhikIn
@VzhikIn 3 жыл бұрын
Освети тему mock пожалуйста 🙏
@rokot
@rokot 3 жыл бұрын
Два дня назад было опубликовано имя зодиака Gary Francis Poste.
@АрсланГаджиев-ж5ж
@АрсланГаджиев-ж5ж 3 жыл бұрын
Здравствуйте. Помогите сделать правильный выбор. Хочу обучиться программированию. Зная о двух языках программирования ( поверхностно об их применениях ) python и JavaScript . Что лучше изучить для работы, карьеры , возможности переезда за границу?? Я полный ноль в программировании и мне по сути нет разницы какой язык учить , просто вы говорили в не которых видосах что программировалина JavaScript , а сейчас на python , поэтому вопрос к вам так как вы знаете эти два языка на хорошем уровне и знаете их возможности и работали по ним . Очень надеюсь на ваш совет
@t0digital
@t0digital 3 жыл бұрын
Привет! Сложно советовать. На обоих языках пишет много людей, оба языка популярны. JS можно писать и фронтенд, и бэкенд, Python только бэкенд, но при этом на мой взгляд на бэкенде возможностей применения Python всё же больше. Я бы рекомендовал Python, потом выучите и JS уже по ходу работы.
@АрсланГаджиев-ж5ж
@АрсланГаджиев-ж5ж 3 жыл бұрын
@@t0digital спасибо большое вам за отклик и совет
@АлександрМелихов-к8м
@АлександрМелихов-к8м 6 ай бұрын
С таким подходом - никак. Начните с избавления головы от маркетингового мусора. Самое важное что нужно понять, программирование - это инженерная деятельность, связанная с реализацией алгоритмов обработки информации в различных целях. Это могут быть и инженерные расчёты, и управление сложными процессами, веб-приложения и игры. Не занимайтесь программированием ради программирования, учитесь находить задачи и решать их кодом, постепенно изучая принципы работы вычислительных машин, алгоритмы и фундаментальные понятия программирования. Только так можно стать востребованным специалистом, который не боится смены языка и/или технологии. Каждый конкретный инструмент удобен для решения ограниченного круга задач, поэтому выберите сферу и изучайте инструменты, которые в ней используются. Операционные системы, микроконтроллеры, драйвера - низкоуровневое программирование (С/asm/verilog/processing...), магазины, CRM и проч - web-технологии (frontend/backend и СУБД, даже не столь важно на чём именно), наука и прочий ресёрч - R / python.
@dizzivoneverec2737
@dizzivoneverec2737 3 жыл бұрын
А чем композиция отличается от DI ?
@delir0
@delir0 3 жыл бұрын
Тем же, чем автомобиль отличается от двигателя. Это ортогональные вещи.
@AlexandrSpirit
@AlexandrSpirit 3 жыл бұрын
Хаскел и Go, без ООП, и одни из самых быстрых языков для бека. Где-то слышал, что без причины не стоит создавать класс где можно обойтись функцией, т.к. объекты из классов будут храниться в памяти и всё будет работать медленнее чем на функциях. Прокомментируете?
@p.shpyro
@p.shpyro 3 жыл бұрын
Пока ты будешь думать, как обойтись без классов / ускорить программу и т.д. - программист ООП напишет целый проект. Вдобавок компании типа Оракл или Майкрософт реально стараются оптимизировать свои ООП языки, для быстрой работы на хорошем уровне
@AlexandrSpirit
@AlexandrSpirit 3 жыл бұрын
@@p.shpyro Да я не думаю, пишу.
@DimiEG
@DimiEG 3 жыл бұрын
Не совсем понятно к чему это видео... Кстати а Вы Go lang практикуете совместно с Python? И что вы думаете о глобальных переменных в Python и стоит ли от них избавляться?
@t0digital
@t0digital 3 жыл бұрын
Много глобальных переменных - плохо, немного иногда может быть оправдано. Go не практикую, практикую Rust сейчас, мне он сильно интереснее
@DimiEG
@DimiEG 3 жыл бұрын
Да, тоже увлёкся Rust, но потом вернулся на Python. Rust всё ещё сыроват, да и перспективы туманны.
@t0digital
@t0digital 3 жыл бұрын
@@DimiEG я вижу только блестящее будущее у раста:) сыроват - сейчас уже нет, сейчас уже можно пользоваться, версии нужных библиотек вышли в стабильные релизы, Токио и тд
@t0digital
@t0digital 3 жыл бұрын
@@mikenike7869 он пока не дошел до продакшна у нас, но, думаю, дойдет. Нам для веба в 1 очередь интересен, но веб сейчас это понятие оч растяжимое. Скорость, безопасность, интересные концепции в языке и тд. Есть интересная серия у Фейсбука, интервью с их Раст девелоперами, это одно из них, и внизу ссылки на другие интервью, почитайте, если интересны эти вопросы developers.facebook.com/blog/post/2021/09/09/meet-the-rustaceans-brendon-daugherty/
@DimiEG
@DimiEG 3 жыл бұрын
На Rust я стал сайт мутить на Rocket framework. Он даже заработал. Но увидев насколько богат в этом деле Python переключился на него. У Rust ужасный синтаксис под влиянием разных языков, в том числе JavaScript. Из за этого когда много кода это выглядит просто ужасно. У Python таких проблем меньше.
@ВячеславДолинский-г7ы
@ВячеславДолинский-г7ы 3 жыл бұрын
Согласен полностью. Есть композиция/агрегирование ... Для этого примера это более уместно. Хотелось бы увидеть что то о событийно ориентированном программировании и принципе - любая сложная система должна состоять из модулей слабо зависимых друг от друга. Ну а если прикоснуться к многопоточности...
@PurpleDaemon_
@PurpleDaemon_ 3 жыл бұрын
Тут вроде питон, какая многопоточность?
@plato4ek
@plato4ek 2 жыл бұрын
что за rksok такой? не гуглится что-то
@t0digital
@t0digital 2 жыл бұрын
Задание с курса. Не должно гуглиться, так задумано
@baddynamic4666
@baddynamic4666 3 жыл бұрын
А как вы вышли из vim'a? Я до сих пор не могу оттуда выйти.
@t0digital
@t0digital 3 жыл бұрын
Этот момент не зря не показан, я тоже просто в нем сижу, не закрывая
@alexanderryzhkov9746
@alexanderryzhkov9746 2 жыл бұрын
Был видос про выход из вима. Оказалось его можно свернуть по ctrl-z. Я свой вим свернул и теперь живу с ним.
@backendsamurai
@backendsamurai 3 жыл бұрын
Когда видос по linux ?
@DimiEG
@DimiEG 3 жыл бұрын
У Алексея Мак, так что Linux в пролёте.
@backendsamurai
@backendsamurai 3 жыл бұрын
@@DimiEG вообще то мак это тот же линукс но слегка модифицированный
@DimiEG
@DimiEG 3 жыл бұрын
Мак это Unix FreeBSD. Теперь непонятно что. Сильно перелопаченный программистами эпл.
@misatokatsuragi9122
@misatokatsuragi9122 3 жыл бұрын
Как говорится "Keep it simple, stupid". А как говорят JSники - "наследование в ООП - антипаттерн"
@СергейПресняков-о4р
@СергейПресняков-о4р 3 жыл бұрын
В JS вообще своеобразное ООП
@PurpleDaemon_
@PurpleDaemon_ 3 жыл бұрын
Вроде в js это дополнительно обусловлено производительностью на парсинг всей этой цепочки наследования.
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
не js'ник, но полностью согласен в этом с ними! сложные иерархии наследования зло.
@color3dcud129
@color3dcud129 3 жыл бұрын
Алексей, обратно на Mac вернулись?
@t0digital
@t0digital 3 жыл бұрын
Буквально сегодня слетел wifi, не цеплял сеть, пол часа бодался, вспоминал добрыми словами Кука))) Так я в целом не уходил с мака, thinkpad'ом тоже пользуюсь
@uvesel4ak
@uvesel4ak 3 жыл бұрын
@@t0digital Алексей, так понимаю, у Вас финкпад старый. Не поделитесь своим мнением тезисно вкратце о новых финкпадах? Взяли бы себе такой?
@t0digital
@t0digital 3 жыл бұрын
​@@uvesel4ak в целом меня и моя модель устраивает, единственное что в новых хорошо (что мне нравится) - это меньше рамка внизу, больше контента по вертикали помещается. Но в новых ход клавиатуры стал чуть меньше и мне это не нравится, здесь на старом клавиатура великолепна
@404piano
@404piano 3 жыл бұрын
Блин, столько комментаторов злых, которые не понимают зачем это видео.
@vladislavstepanov7591
@vladislavstepanov7591 3 жыл бұрын
@@Das.Kleine.Krokodil ревью кода на стриме
@i.am.rossalex
@i.am.rossalex 3 жыл бұрын
Блин! Хоть кто-то поддержал процедурный стиль!
@movidikovich
@movidikovich 2 жыл бұрын
он не поддержал процедурный стиль, просто на питоне обычная процедурка очень сильно похожа на ооп
@gaben_aTan
@gaben_aTan Жыл бұрын
Самое печальное, что ООП в Ютуб на примерах блогеры практически не используют. У меня когда прога без ООП уходит за 500 строк, получается буэээээ...
@kirillzh4798
@kirillzh4798 3 жыл бұрын
Если честно, то до Алексея думал, что ООП и все эти "наследования" в классах - это функциональные инструменты, а оно вон как - ООП это для логики. В книжках про такое не писали, или я не те книжки читал))
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
сам понял что сказал? ООП для логики?
@kirillzh4798
@kirillzh4798 2 жыл бұрын
@@xcxc-iu3rb а ты сам ролик целиком смотрел перед тем как в коменты идти? )
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
@@kirillzh4798 да, даже второй раз пересмотрел, он не говорил "ООП для логики"
@kirillzh4798
@kirillzh4798 2 жыл бұрын
@@xcxc-iu3rb, ну, значит тебе не дано понять. =) За 11 месяцев существования комментария только у тебя появились какие-то вопросы к комментарию, который адресован Алексею. Это как влезть в разговор к прохожим.
@Britan1c
@Britan1c 3 жыл бұрын
нормалдыкс)
@Ramon4lk
@Ramon4lk 3 жыл бұрын
может там просто нужно было перейменовать клас в PersonRequest ?
@mikhailgorshenin9076
@mikhailgorshenin9076 3 жыл бұрын
Лайк за alacritty!
@chameleon-one
@chameleon-one 3 жыл бұрын
Суть ролика: a) В ООП существуют 5 концепций: 1) инкапсуляция 2) наследие 3) полиморфизм 4) абстракция 5) композиция b) Не стоит наследовать без логики т.е., родитель Человека не должен быть Запрос!!! От себя: в PyQt - правильная логика :)
@МаксимМаксимов-ч9т
@МаксимМаксимов-ч9т 3 жыл бұрын
ООП не осилил?) Спасибо за видос.
@alicesmith9920
@alicesmith9920 3 жыл бұрын
а это случаем не неовим со своим лсп сервером ?
@t0digital
@t0digital 3 жыл бұрын
да, доволен не на 100%, постараюсь перенастроить и рассказать. Иногда линтер тупит и красит ошибки там, где их нет, бесит) Здесь pyright в качестве LSP сервера
@alicesmith9920
@alicesmith9920 3 жыл бұрын
@@t0digital было бы интересно послушать про настройку 👍🏻
@TheAgathoDaemon
@TheAgathoDaemon 3 жыл бұрын
@@t0digital Аналогично. Было бы очень интересно!
@nucluster
@nucluster 3 жыл бұрын
@@t0digital присоединяюсь к предыдущим докладчикам! Даешь видос про настройку неовима с лсп👍
@hopelesssuprem1867
@hopelesssuprem1867 2 жыл бұрын
проблема ООП на питоне заключается в том, что на русском языке нет ни норм курса, ни норм книги - это главный его минус)
@movidikovich
@movidikovich 2 жыл бұрын
ооп везде плюс минус одинаковое, учите на любом другом языке его
@Jackson-mn3oj
@Jackson-mn3oj 3 жыл бұрын
Я тоже не до конца понимаю на кой черт ООП на пайтоне, если пишешь небольшие скрипты =))) Это от джавистов мода на классы пошла, где "привет мир" хочет класс и метод.
@t0digital
@t0digital 3 жыл бұрын
ага
@leonidzimin2419
@leonidzimin2419 3 жыл бұрын
Пример, посмотри как в django реализованы модели данных, формы и пр. Тут ООП идеально подходит.
@DimiEG
@DimiEG 3 жыл бұрын
Полагаю классы нужны чтобы объединить несколько функция для выполнения общей задачи. Кстати в современных языках таких как Go или Rust избавились от классов под предлогом, что тормознутые они и используйте вместо этого структуры.
@andruhaz
@andruhaz 3 жыл бұрын
Вот вот..про ООП в питоне про себя говорю словами Алексея "...Понапридумали всякой хрени"))) Основатели питона говорили простое лучше сложного. Инкапсуляция которой по факту нет(ну с костылем есть). Но то, что ООП есть это есть для большой разработки просто замечательно. Сижу читаю паттерны приходит крамольная мысль - а ведь для этих вещей Джава гораздо как бы...естественнее выглядит..
@DrublChannel
@DrublChannel 3 жыл бұрын
Почти все видосы были интересными и полезными, но ощущение, что этот был сделан лишь бы сделать, абсолютно проходной, примеры тоже не очень, ждём новых, интересных видео
@t0digital
@t0digital 3 жыл бұрын
Это видео не сделано для канала, не готовилось, не писался сценарий и тд, это вырезка из стрима, НО судя по тому коду, что я читаю на ревью - для многих это будет более чем полезно. Не полезно для вас - не значит неполезно для всех:) Подготовленные видео никуда не исчезнут с канала.
@brenkovd
@brenkovd 3 жыл бұрын
Не могу смотреть на Питон, какая каша , наверно я сильно приплюснутый
@illyamosiichuk670
@illyamosiichuk670 3 жыл бұрын
Это пример плохого кода на python))
@brenkovd
@brenkovd 3 жыл бұрын
​@@illyamosiichuk670 Видимо удачно Алексей показал пример плохого кода))
@dmitriykonopinskiy3793
@dmitriykonopinskiy3793 3 жыл бұрын
плохо без скобочек? =))
@brenkovd
@brenkovd 3 жыл бұрын
@@dmitriykonopinskiy3793 Я бы сказал очень)
@anmaner4822
@anmaner4822 3 жыл бұрын
Не понятно, к чему вообще это видео? Чтобы в последних 30 секундах рассказать о композиции, к тому же ещё и перепутать ее с агрегацией?
@t0digital
@t0digital 3 жыл бұрын
Вы не правы, в видео композиция, а не агрегация.
@anmaner4822
@anmaner4822 3 жыл бұрын
@@t0digital Ну тогда я видимо не до конца понял смысл ваших класов, но суть в другом, если проект небольшой, нет смысла задрачивать в нем ООП, использовать 10 слоев абстракции и прочего, но если проект огромный, без ООП, в процедурном стиле, уже через несколько месяцев он превратиться в кашу и его будет невозможно расширять и поддерживать, нужно было об этом рассказать, а не о том, нужно ООП в питоне или нет.
@t0digital
@t0digital 3 жыл бұрын
«не до конца понял смысл классов» а что там понимать в этих последних 30 сек видео, где в конструкторе создается экземпляр класса (композиция) вместо передачи ссылки на него в конструктор снаружи (агрегация) :)? В видео не говорится о том, нужно ООП в питоне или не нужно, в видео говорится о том, что не надо ООП ради ООП, его надо применять обоснованно, когда а) оно нужно и б) умеешь в ООП
@anmaner4822
@anmaner4822 3 жыл бұрын
@@t0digital Ну уж извините, я к сожелению, ну или к счатью не програмирую на ваших питонах и не очень понимаю не си-подобный синтаксис, судил по названиям класа, моя ошибка, признаю. "его надо применять обоснованно" - а теперь перечитайте мое сообщение выше, я об этом и говорю и о том, что эта тема не раскрыта, видео совсем не о чем.
@sergzach
@sergzach 3 жыл бұрын
Если пишете без ООП, Ваш код в любом случае процедурный, потому что не функциональный же? А это плохо. Дело не в языке программирования, ООП нормально ложится на Python. Это скорее концепция, а даже не непосредственно классы.
@t0digital
@t0digital 3 жыл бұрын
Не надо ООП ради ООП, и особенно не надо ООП, если ещё не умеете в него, речь этом. В джава даже hello world без ООП не написать, а в питоне можно. Да и ООП в питоне - это не ООП канонический в джава. Считается нормальным делать абстрактный класс, методы которого делают raise NotImplementedError. Интерфейсы надо вообще импортировать, они даже не подключены и реализованы как нахлобучка сбоку. Питон очевидным образом говорит - подумай дважды, прежде чем это делать.
@sergzach
@sergzach 3 жыл бұрын
Я просто выступаю за шаблоны проектирования, вовсе не обязательно слепо следовать строгим правилам. Согласен. Но, если постараться забыть про ООП, как показывает практика, на определённом этапе становится очень неудобно работать с кодом. Чтобы он оставался надёжным, потребуется делать функции с большим количеством параметров. Читать это становится трудно. И тут приходим к мысли, уж лучше было бы изначально ООП ради ООП. Помучились бы вначале, но постепенно нашли бы "золотую середину".
@27182818284590452354
@27182818284590452354 3 жыл бұрын
@@sergzach Этапы жизни программиста: 0. ООП сложно 1. ООП обязательно 2. ООП больно 3. ООП зло 4. ООП местами уместно
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
Кто сказал что это плохо? А ООП код не процедурный, нет? Не функциональный же. Он так то еще более процедурный, потому что там поощряется использование глобальных переменных в пределах класса, более того одни классы могут менять переменные других классов. Очень легко нагородить адского треша. То, то в ООП процедуры назвали методами, от этого они процедурами быть не перестали.
@xcxc-iu3rb
@xcxc-iu3rb 2 жыл бұрын
@@sergzach как количество аргументов влияет на читаемость? По-моему вообще никак. Более важно на сколько логичная структура, логичные и внятные имена переменных и тд. И ООП код бывает читать очень сложно.
@LeoVRad
@LeoVRad 3 жыл бұрын
Зашёл чтоб поставить дизлайк за тупое название ролика
@t0digital
@t0digital 3 жыл бұрын
Въеби сразу два дизлайка!
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 45 МЛН
Именование переменных, классов и методов в коде
25:40
Dependency Injection Explained in 7 Minutes
7:11
ArjanCodes
Рет қаралды 67 М.