Эта тема может быть не совсем понятна питонистам, но я пишу на джаве, и там это в порядке вещей. Если вы пишите программу на несколько сотен строк кода - вам это не понадобится. Но если речь идёт о проекте, с с десятками классов и тысячами строк кода - то без абстрактных классов вам будет очень тяжело. Интересно ещё, есть-ли в пайтоне аналог интерфейсов?
Ну в джаве это понятно зачем: множественного наследованная нет, а язык заточен под ооп. Но в питоне? Import Abs? Хоть в одном проекте видели? Сами использовали? В джанге таких строк вообще нет (а это довольно развесистая штука). Protocol - ок. Для всяких соединительных штук, микросервисов и пр. полезен. Питон красив гибкостью.
Отличное видео!!! Очень мало где можно найти настолько высокую концентрацию содержательного материала уложенную в 10 минут, поэтому отдельное уважение! за 15минут (с перемотками) понял лучше, чем за 2х(Пол дня)!
Разрабатываю уже давно, но смотря твои ролики без 100 грамм не разберешься. Данное видео не осилил, после 1.30 минуты информационного потока стало вообще не понятно какую задачу ты решаешь и какую мысль хочешь донести. Подумай, пожалуйста, над этим т.к. это учебный материал, а не конкурс экстрасенсов для разработчиков.
@@zproger Нам абстракции объясняли на примерах и перед этим рассказывали зачем они нужны и чем отличаются. Последовательная подача информации здесь ключевой элемент т.к. без понимания "А" не понятно будет и "Б". В ролике, к сожалению, сразу идет "Б" без понимания, что это за протоколы и какую задачу решают. Возможно, у тебя уже есть материал на эту тему, но человек который не посмотрел предыдущий ролик будет не в контексте. Возможно, следует сделать отсылку в ролике к нему, чтобы исключить данное недопонимание сего материала. Всех благ и с Новым годом.
Двойное нижнее подчеркивание не имеет отношение к защите атрибутов или методов. Их задача - name mangling. Этот механизм предназначен для предотвращения конфликтов имен в подклассах. Если хотите пометить атрибут, как приватный, достаточно одного нижнего подчеркивания.
Коротко и ясно без воды. Спасибо за видео. Как раз перед НГ в команде касались тему применения протоколов. Думал читать и вкуривать придётся. А тут видос))
Круто конечно, а как же дзен пайтона явное лучше не явного? В приложенных примерах нужно следить за сигнатурами функций, может лучше использовать инъекции зависимостей вместо утиной типизации?
Чето как-то сложно, Вобщем это тоже самое но Протокол можно использолвать без наследования? А еще не понял Protocol это больше типо как для типизации чем проверки в рантайме? Я так понял Протокол удобно когда нет общего родительского класса допустим разные за смыслом штуки но они должны реализововать нужные методы?
Протокол - утка. (утиная типизация) В т.ч протокол - интерфейс. Т.е его можно как наследовать, если использоваться в качестве интерфейса, так и просто делать уткой, просто описывая методы. В свою очередь abc это абстракция, зачастую которую используют в базовых классах, определяя и реализовывая какие-либо методы, которые должны быть у будущих наследвников. Protocol или интерфейс не подразумевает реализации, он только описывает. З.Ы почти все базовые типы в пайтоне инвариантны, и то, как поступает автор, зачастую не есть отличный способ типизации, особенно если у вас функция использует некий метод обьекта, которого нет в базовом, но есть в наследнике, а наследников куча - типизировать базой, - неверно. Но верно то, что обьекты должны зависеть от абстракций или интерфейсов, а не конкретной реализации, но в пайтоне достижение подобного может быть еще той попоболью, особенно если есть обобщенные типы (дженерики) - код растет экспоненциально. Так-то вот идея автору разобрать ковариантность, инвариантность и контрвариантность. Для примера Dict - инвариантный тип-дженерик, когда как Mapping - ковариантный.
Упс, забыл добавить. Но в целом тут сильно зависит от задачи, если нужна явная привязка, тогда ABC, если нужна утиная типизация и неявное определение, тогда Protocol.
Ну почему, если руки прямые, то никаких проблем не вижу, на тех же плюсах или сишке софт в разы тяжелее сделать безопасным. В этом плане мне больше нравится Rust, если именно о безопасности говорить.
Т.е. абс это в общем наследование с полиморфизмом и виртуальным механизмом, в то время как протокол- это не про наследование, а про перегрузку функций, этакий адхок полиморф?..
ABC заставляет явно определять различные механизмы, а Protocol делает это неявно. Только когда объект будет похож на протокол, только тогда он будет к нему принадлежать.
Протокол, это что-то вроде контракта, который необходимо реализовать хотя бы частично… так получается?.. абсы это понятно, в принципе обычный чисто виртуальный класс в плюсах, не имеющий реализации, служащий только для наследования, вроде интерфейса.. а вот с протоколом не сталкивался 🥴
Так в видео же рассказал что это такое) Там достаточно пару примеров, однако добавлю, что я когда только изучал это, то тоже далеко не сразу понял. Абстракции это очень сложная для понимания тема, и нужно время, чтобы осознать принцип работы.
Очень хочу увидеть ролик по сетапу твоей системы - как именно ты настроил арч под себя.Глаза не нарадуются.
Эта тема может быть не совсем понятна питонистам, но я пишу на джаве, и там это в порядке вещей.
Если вы пишите программу на несколько сотен строк кода - вам это не понадобится. Но если речь идёт о проекте, с с десятками классов и тысячами строк кода - то без абстрактных классов вам будет очень тяжело.
Интересно ещё, есть-ли в пайтоне аналог интерфейсов?
Ну в джаве это понятно зачем: множественного наследованная нет, а язык заточен под ооп.
Но в питоне? Import Abs? Хоть в одном проекте видели? Сами использовали? В джанге таких строк вообще нет (а это довольно развесистая штука). Protocol - ок. Для всяких соединительных штук, микросервисов и пр. полезен.
Питон красив гибкостью.
Лайк если хочешь разбор пиздатейшего кастома арча
Отличное видео!!! Очень мало где можно найти настолько высокую концентрацию содержательного материала уложенную в 10 минут, поэтому отдельное уважение! за 15минут (с перемотками) понял лучше, чем за 2х(Пол дня)!
Спасибо за полезное видео, вы первый кого мне интересно слушать по програмированию, спасибо :)
Вау, абстракт классы в питоне, он начинает получать функционал как у C# или Java. Теперь жду когда появятся структуры и интерфейсы.
Та абстракциям в питоне уже как 100 лет в обед :D
Разрабатываю уже давно, но смотря твои ролики без 100 грамм не разберешься. Данное видео не осилил, после 1.30 минуты информационного потока стало вообще не понятно какую задачу ты решаешь и какую мысль хочешь донести. Подумай, пожалуйста, над этим т.к. это учебный материал, а не конкурс экстрасенсов для разработчиков.
Без 100 грамм с абстракциями и не разобраться, это довольно сложная тема, тут нужно комбинировать практику + статьи + другие видео.
@@zproger Нам абстракции объясняли на примерах и перед этим рассказывали зачем они нужны и чем отличаются. Последовательная подача информации здесь ключевой элемент т.к. без понимания "А" не понятно будет и "Б". В ролике, к сожалению, сразу идет "Б" без понимания, что это за протоколы и какую задачу решают. Возможно, у тебя уже есть материал на эту тему, но человек который не посмотрел предыдущий ролик будет не в контексте. Возможно, следует сделать отсылку в ролике к нему, чтобы исключить данное недопонимание сего материала.
Всех благ и с Новым годом.
Спасибо за развернутый комментарий, исправлю. Желаю также всего хорошего в новом году. 😉😉
Я ставлю на паузу, разбираю код на экране, и продолжаю смотреть только когда пойму код.
Вроде все довольно ясно
Двойное нижнее подчеркивание не имеет отношение к защите атрибутов или методов. Их задача - name mangling. Этот механизм предназначен для предотвращения конфликтов имен в подклассах. Если хотите пометить атрибут, как приватный, достаточно одного нижнего подчеркивания.
Коротко и ясно без воды. Спасибо за видео. Как раз перед НГ в команде касались тему применения протоколов. Думал читать и вкуривать придётся. А тут видос))
Красота, рад что смог помочь ;)
Слушай у тебя круто оформлен арч и настроен Vim. Можешь сделать гайд пожалуйста по настройке?
Делаю потихоньку, проблемки немного с билдером)
@@zproger спасибо тебе, ты единственный кодерный блогер, которого смотрю. Буду ждать твой гайд.
Привет, а когда будет видио про твою сборку arch?
Ничего не понял, но очень интересно🥲
Надо пощупать код индивидуально, думаю тогда все выйдет
Круто конечно, а как же дзен пайтона явное лучше не явного?
В приложенных примерах нужно следить за сигнатурами функций, может лучше использовать инъекции зависимостей вместо утиной типизации?
Чето как-то сложно, Вобщем это тоже самое но Протокол можно использолвать без наследования? А еще не понял Protocol это больше типо как для типизации чем проверки в рантайме? Я так понял Протокол удобно когда нет общего родительского класса допустим разные за смыслом штуки но они должны реализововать нужные методы?
Протокол - утка. (утиная типизация)
В т.ч протокол - интерфейс. Т.е его можно как наследовать, если использоваться в качестве интерфейса, так и просто делать уткой, просто описывая методы. В свою очередь abc это абстракция, зачастую которую используют в базовых классах, определяя и реализовывая какие-либо методы, которые должны быть у будущих наследвников. Protocol или интерфейс не подразумевает реализации, он только описывает.
З.Ы почти все базовые типы в пайтоне инвариантны, и то, как поступает автор, зачастую не есть отличный способ типизации, особенно если у вас функция использует некий метод обьекта, которого нет в базовом, но есть в наследнике, а наследников куча - типизировать базой, - неверно. Но верно то, что обьекты должны зависеть от абстракций или интерфейсов, а не конкретной реализации, но в пайтоне достижение подобного может быть еще той попоболью, особенно если есть обобщенные типы (дженерики) - код растет экспоненциально.
Так-то вот идея автору разобрать ковариантность, инвариантность и контрвариантность.
Для примера Dict - инвариантный тип-дженерик, когда как Mapping - ковариантный.
Оооо, то что надо, я как раз думал про это почитать, но было лень, писал raise NotImplementedError
Значит я вовремя :)))
да жесть это плохая практика к тому же в abc еще в рантайме будет ошибка о том что методы не реализованы
я уже и забыл про ABC, а про protocol даже и не знал - также все raise NotImpl... обмазал, придется все рефачить
Добрый день, хотел узнать что у вас за ноутбук ?
надо было в конце рассказать что лучше использовать
Упс, забыл добавить. Но в целом тут сильно зависит от задачи, если нужна явная привязка, тогда ABC, если нужна утиная типизация и неявное определение, тогда Protocol.
python и безопасный софт, звучит как антонимы
Ну почему, если руки прямые, то никаких проблем не вижу, на тех же плюсах или сишке софт в разы тяжелее сделать безопасным. В этом плане мне больше нравится Rust, если именно о безопасности говорить.
Rust тема, жду по нему видосы@@zproger
@@nikitatimofeenko9351 omg rust fan detected
Можеш поделитися дотами bspwm и полибара и picom
Можно, пожалуйста, настройку вимаса?
Это шрифт JB Mono? Кстати хочу порекомендовать попробуй JuliaMono
Да. Спасибо за шрифт, попробую.
Понял сразу, но все таки быстровато. Если бы изложение материала было немного пемедленей. А то такое ощущение что автор куда-то все время опаздывает
Т.е. абс это в общем наследование с полиморфизмом и виртуальным механизмом, в то время как протокол- это не про наследование, а про перегрузку функций, этакий адхок полиморф?..
ABC заставляет явно определять различные механизмы, а Protocol делает это неявно. Только когда объект будет похож на протокол, только тогда он будет к нему принадлежать.
Протокол, это что-то вроде контракта, который необходимо реализовать хотя бы частично… так получается?.. абсы это понятно, в принципе обычный чисто виртуальный класс в плюсах, не имеющий реализации, служащий только для наследования, вроде интерфейса.. а вот с протоколом не сталкивался 🥴
ABC - явный интерфейс
Protocol - неявный интерфейс
Я абсолютно ничего не понял...Возможно чтобы понимать, нужно знать что такое ABC и Protocol
Так в видео же рассказал что это такое) Там достаточно пару примеров, однако добавлю, что я когда только изучал это, то тоже далеко не сразу понял. Абстракции это очень сложная для понимания тема, и нужно время, чтобы осознать принцип работы.
Круто
Благодарю
когда видео про создание игры?(
Про грибка?))
А почему просто не программировать на нормальном ООП языке, PHP или Java например)
Лично я язык выбираю под определенную задачу, скажем я не выберу Java, только потому что там ООП лучше, если при этом он не решает мою задачу.
Для каждой задачи свой язык выбирается. Те же нейронки просто писать на Python, на C/C++ пишут драйвера и т.д.
(это не значит, что на C/C++ нельзя написать нейронку, просто обычно для этого используют другой язык)
newyear23 :D
Первый
😎😎😎
Чего бл..., о чем это было, бро?