ABC или Protocol в Python? Что лучше и когда стоит использовать?

Поделиться
HTML-код
  • Опубликовано: 30 ноя 2024

Комментарии • 61

  • @ЕрасылҚадыр
    @ЕрасылҚадыр 11 месяцев назад +2

    Очень хочу увидеть ролик по сетапу твоей системы - как именно ты настроил арч под себя.Глаза не нарадуются.

  • @augustlight48
    @augustlight48 11 месяцев назад +3

    Эта тема может быть не совсем понятна питонистам, но я пишу на джаве, и там это в порядке вещей.
    Если вы пишите программу на несколько сотен строк кода - вам это не понадобится. Но если речь идёт о проекте, с с десятками классов и тысячами строк кода - то без абстрактных классов вам будет очень тяжело.
    Интересно ещё, есть-ли в пайтоне аналог интерфейсов?

    • @alexdubkov6998
      @alexdubkov6998 10 месяцев назад +1

      Ну в джаве это понятно зачем: множественного наследованная нет, а язык заточен под ооп.
      Но в питоне? Import Abs? Хоть в одном проекте видели? Сами использовали? В джанге таких строк вообще нет (а это довольно развесистая штука). Protocol - ок. Для всяких соединительных штук, микросервисов и пр. полезен.
      Питон красив гибкостью.

  • @sm0ulder674
    @sm0ulder674 11 месяцев назад +2

    Лайк если хочешь разбор пиздатейшего кастома арча

  • @ОбезьянаЧичичи-в8л
    @ОбезьянаЧичичи-в8л 11 месяцев назад +1

    Отличное видео!!! Очень мало где можно найти настолько высокую концентрацию содержательного материала уложенную в 10 минут, поэтому отдельное уважение! за 15минут (с перемотками) понял лучше, чем за 2х(Пол дня)!

  • @gh0st1k9
    @gh0st1k9 10 месяцев назад

    Спасибо за полезное видео, вы первый кого мне интересно слушать по програмированию, спасибо :)

  • @lowGP
    @lowGP 11 месяцев назад +5

    Вау, абстракт классы в питоне, он начинает получать функционал как у C# или Java. Теперь жду когда появятся структуры и интерфейсы.

    • @zproger
      @zproger  11 месяцев назад +1

      Та абстракциям в питоне уже как 100 лет в обед :D

  • @wild_wizards
    @wild_wizards 11 месяцев назад +24

    Разрабатываю уже давно, но смотря твои ролики без 100 грамм не разберешься. Данное видео не осилил, после 1.30 минуты информационного потока стало вообще не понятно какую задачу ты решаешь и какую мысль хочешь донести. Подумай, пожалуйста, над этим т.к. это учебный материал, а не конкурс экстрасенсов для разработчиков.

    • @zproger
      @zproger  11 месяцев назад

      Без 100 грамм с абстракциями и не разобраться, это довольно сложная тема, тут нужно комбинировать практику + статьи + другие видео.

    • @wild_wizards
      @wild_wizards 11 месяцев назад +7

      @@zproger Нам абстракции объясняли на примерах и перед этим рассказывали зачем они нужны и чем отличаются. Последовательная подача информации здесь ключевой элемент т.к. без понимания "А" не понятно будет и "Б". В ролике, к сожалению, сразу идет "Б" без понимания, что это за протоколы и какую задачу решают. Возможно, у тебя уже есть материал на эту тему, но человек который не посмотрел предыдущий ролик будет не в контексте. Возможно, следует сделать отсылку в ролике к нему, чтобы исключить данное недопонимание сего материала.
      Всех благ и с Новым годом.

    • @zproger
      @zproger  11 месяцев назад +3

      Спасибо за развернутый комментарий, исправлю. Желаю также всего хорошего в новом году. 😉😉

    • @АйратБакиев-ш9и
      @АйратБакиев-ш9и 11 месяцев назад

      Я ставлю на паузу, разбираю код на экране, и продолжаю смотреть только когда пойму код.

    • @НиколайРюмин-й6и
      @НиколайРюмин-й6и 11 месяцев назад +1

      Вроде все довольно ясно

  • @krelvit
    @krelvit 11 месяцев назад

    Двойное нижнее подчеркивание не имеет отношение к защите атрибутов или методов. Их задача - name mangling. Этот механизм предназначен для предотвращения конфликтов имен в подклассах. Если хотите пометить атрибут, как приватный, достаточно одного нижнего подчеркивания.

  • @АйратБакиев-ш9и
    @АйратБакиев-ш9и 11 месяцев назад +3

    Коротко и ясно без воды. Спасибо за видео. Как раз перед НГ в команде касались тему применения протоколов. Думал читать и вкуривать придётся. А тут видос))

    • @zproger
      @zproger  11 месяцев назад

      Красота, рад что смог помочь ;)

  • @atmospheremusic-s8t
    @atmospheremusic-s8t 11 месяцев назад +3

    Слушай у тебя круто оформлен арч и настроен Vim. Можешь сделать гайд пожалуйста по настройке?

    • @zproger
      @zproger  11 месяцев назад +2

      Делаю потихоньку, проблемки немного с билдером)

    • @atmospheremusic-s8t
      @atmospheremusic-s8t 11 месяцев назад

      @@zproger спасибо тебе, ты единственный кодерный блогер, которого смотрю. Буду ждать твой гайд.

  • @Sliwcom
    @Sliwcom 11 месяцев назад

    Привет, а когда будет видио про твою сборку arch?

  • @skylinerus3181
    @skylinerus3181 11 месяцев назад +2

    Ничего не понял, но очень интересно🥲

    • @zproger
      @zproger  11 месяцев назад

      Надо пощупать код индивидуально, думаю тогда все выйдет

  • @rudolphsikorskiy18
    @rudolphsikorskiy18 11 месяцев назад +1

    Круто конечно, а как же дзен пайтона явное лучше не явного?
    В приложенных примерах нужно следить за сигнатурами функций, может лучше использовать инъекции зависимостей вместо утиной типизации?

  • @shakapaker
    @shakapaker 11 месяцев назад +1

    Чето как-то сложно, Вобщем это тоже самое но Протокол можно использолвать без наследования? А еще не понял Protocol это больше типо как для типизации чем проверки в рантайме? Я так понял Протокол удобно когда нет общего родительского класса допустим разные за смыслом штуки но они должны реализововать нужные методы?

    • @brothersstudio3566
      @brothersstudio3566 11 месяцев назад +1

      Протокол - утка. (утиная типизация)
      В т.ч протокол - интерфейс. Т.е его можно как наследовать, если использоваться в качестве интерфейса, так и просто делать уткой, просто описывая методы. В свою очередь abc это абстракция, зачастую которую используют в базовых классах, определяя и реализовывая какие-либо методы, которые должны быть у будущих наследвников. Protocol или интерфейс не подразумевает реализации, он только описывает.
      З.Ы почти все базовые типы в пайтоне инвариантны, и то, как поступает автор, зачастую не есть отличный способ типизации, особенно если у вас функция использует некий метод обьекта, которого нет в базовом, но есть в наследнике, а наследников куча - типизировать базой, - неверно. Но верно то, что обьекты должны зависеть от абстракций или интерфейсов, а не конкретной реализации, но в пайтоне достижение подобного может быть еще той попоболью, особенно если есть обобщенные типы (дженерики) - код растет экспоненциально.
      Так-то вот идея автору разобрать ковариантность, инвариантность и контрвариантность.
      Для примера Dict - инвариантный тип-дженерик, когда как Mapping - ковариантный.

  • @n1ret
    @n1ret 11 месяцев назад +1

    Оооо, то что надо, я как раз думал про это почитать, но было лень, писал raise NotImplementedError

    • @zproger
      @zproger  11 месяцев назад +1

      Значит я вовремя :)))

    • @luwqz1
      @luwqz1 11 месяцев назад

      да жесть это плохая практика к тому же в abc еще в рантайме будет ошибка о том что методы не реализованы

    • @7676562
      @7676562 11 месяцев назад +1

      я уже и забыл про ABC, а про protocol даже и не знал - также все raise NotImpl... обмазал, придется все рефачить

  • @faraname8990
    @faraname8990 10 месяцев назад

    Добрый день, хотел узнать что у вас за ноутбук ?

  • @andren2889
    @andren2889 11 месяцев назад +4

    надо было в конце рассказать что лучше использовать

    • @zproger
      @zproger  11 месяцев назад +1

      Упс, забыл добавить. Но в целом тут сильно зависит от задачи, если нужна явная привязка, тогда ABC, если нужна утиная типизация и неявное определение, тогда Protocol.

  • @nikitatimofeenko9351
    @nikitatimofeenko9351 11 месяцев назад +6

    python и безопасный софт, звучит как антонимы

    • @zproger
      @zproger  11 месяцев назад +4

      Ну почему, если руки прямые, то никаких проблем не вижу, на тех же плюсах или сишке софт в разы тяжелее сделать безопасным. В этом плане мне больше нравится Rust, если именно о безопасности говорить.

    • @nikitatimofeenko9351
      @nikitatimofeenko9351 11 месяцев назад +1

      Rust тема, жду по нему видосы@@zproger

    • @nakidai
      @nakidai 10 месяцев назад

      @@nikitatimofeenko9351 omg rust fan detected

  • @ДаняГриненко-х3я
    @ДаняГриненко-х3я 10 месяцев назад

    Можеш поделитися дотами bspwm и полибара и picom

  • @СергейЮров-б6е
    @СергейЮров-б6е 11 месяцев назад

    Можно, пожалуйста, настройку вимаса?

  • @shakapaker
    @shakapaker 11 месяцев назад

    Это шрифт JB Mono? Кстати хочу порекомендовать попробуй JuliaMono

    • @zproger
      @zproger  11 месяцев назад

      Да. Спасибо за шрифт, попробую.

  • @ia_prosto_coder4208
    @ia_prosto_coder4208 10 месяцев назад +1

    Понял сразу, но все таки быстровато. Если бы изложение материала было немного пемедленей. А то такое ощущение что автор куда-то все время опаздывает

  • @КириллЧе-я5ы
    @КириллЧе-я5ы 11 месяцев назад +1

    Т.е. абс это в общем наследование с полиморфизмом и виртуальным механизмом, в то время как протокол- это не про наследование, а про перегрузку функций, этакий адхок полиморф?..

    • @zproger
      @zproger  11 месяцев назад +1

      ABC заставляет явно определять различные механизмы, а Protocol делает это неявно. Только когда объект будет похож на протокол, только тогда он будет к нему принадлежать.

    • @КириллЧе-я5ы
      @КириллЧе-я5ы 11 месяцев назад

      Протокол, это что-то вроде контракта, который необходимо реализовать хотя бы частично… так получается?.. абсы это понятно, в принципе обычный чисто виртуальный класс в плюсах, не имеющий реализации, служащий только для наследования, вроде интерфейса.. а вот с протоколом не сталкивался 🥴

    • @luwqz1
      @luwqz1 11 месяцев назад

      ABC - явный интерфейс
      Protocol - неявный интерфейс

  • @kamikada13
    @kamikada13 11 месяцев назад +2

    Я абсолютно ничего не понял...Возможно чтобы понимать, нужно знать что такое ABC и Protocol

    • @zproger
      @zproger  11 месяцев назад

      Так в видео же рассказал что это такое) Там достаточно пару примеров, однако добавлю, что я когда только изучал это, то тоже далеко не сразу понял. Абстракции это очень сложная для понимания тема, и нужно время, чтобы осознать принцип работы.

  • @steefsteefler5760
    @steefsteefler5760 11 месяцев назад

    Круто

    • @zproger
      @zproger  11 месяцев назад

      Благодарю

  • @ОлексійДеревянко-з8с
    @ОлексійДеревянко-з8с 11 месяцев назад

    когда видео про создание игры?(

    • @zproger
      @zproger  11 месяцев назад

      Про грибка?))

  • @АлександрГалицкий-т6ф
    @АлександрГалицкий-т6ф 8 месяцев назад

    А почему просто не программировать на нормальном ООП языке, PHP или Java например)

    • @zproger
      @zproger  8 месяцев назад

      Лично я язык выбираю под определенную задачу, скажем я не выберу Java, только потому что там ООП лучше, если при этом он не решает мою задачу.

    • @ruden6623
      @ruden6623 8 месяцев назад

      Для каждой задачи свой язык выбирается. Те же нейронки просто писать на Python, на C/C++ пишут драйвера и т.д.

    • @ruden6623
      @ruden6623 8 месяцев назад

      (это не значит, что на C/C++ нельзя написать нейронку, просто обычно для этого используют другой язык)

  • @dimanandreev
    @dimanandreev 11 месяцев назад

    newyear23 :D

  • @noobodykms
    @noobodykms 11 месяцев назад +1

    Первый

    • @zproger
      @zproger  11 месяцев назад

      😎😎😎

  • @MrALEXUS100
    @MrALEXUS100 11 месяцев назад

    Чего бл..., о чем это было, бро?