Инкапсуляция в Python (и не только)

Поділитися
Вставка
  • Опубліковано 4 жов 2024

КОМЕНТАРІ • 22

  • @Владислав-е6щ9ъ
    @Владислав-е6щ9ъ Рік тому +5

    Наконец-то я увидел понятное видео про инкапсуляцию, спасибо большое!)

  • @vladdragunov5526
    @vladdragunov5526 5 місяців тому +1

    Добрый день, вот уже не первый раз оставляю комент под видео)
    Спасибо большое за понятное объяснение)
    Вот смотрел видео по поводу Абстрактных классов, есть антагонист абстрактных классов это протоколы, очень хотелось бы послушать видео на эту тему, а также сравнения протоколов с абстракцией

    • @pythonclinic
      @pythonclinic  5 місяців тому

      добавил в свой список)

  • @qulinxao
    @qulinxao Рік тому

    и да в С/C++ а Джаве тем более - если у кода есть доступ до бинарного представления объекта то сокрытие в этом смысле нет - Сокрытие это как и статические типы в компилируемых языках - сервис который предоставляется компилятором а не рантаймом(интрепретатором расширяющим хост машину нужными свойствами времени исполнения) для более раннего контроля - ваще этикет(а протоколы доступа это и есть этикет взаимодействия с инфо-сущьностями) тем и полезен, что уменьшает возможное пространство состояний - всё по классике из goto considered harmfull :)

  • @KortezR
    @KortezR Рік тому

    До изучения ООП в python всегда тоже думал, что инкапсуляция связана именно с сокрытием данных. Скорее всего сказалось обучение в универе, где на курсах по плюсам, шарпу и джаве именно про это и говорилось. И это казалось логичным, так как в голове я всегда представлял инкапсуляцию от in capsule - то есть в капсуле, защищенной от внешних воздействий. Но получается, что это не совсем так, и в принципе инкапсуляция позволяет просто упаковать данные и интерфейс так, как это задумывается, с учетом тех данных и методов, которые не задумывались как общедоступные для рядового пользователя (поправьте, если ошибся, пожалуйста)
    Вообще я всегда думал, что инкапсуляция это что-то против злых людей, которые хотят данные узнать или нашкодить, но походу это не совсем так

    • @pythonclinic
      @pythonclinic  Рік тому +1

      всё верно, мне тоже во время учёбы в универе казалось, что мы скрываем данные от каких-то "злоумышленников")) на самом деле мы скрываем не сами данные, а внутреннюю логику реализации всего класса, чтобы полностью контролировать процесс взаимодействия с объектом, вы всё верно расписали

  • @qulinxao
    @qulinxao Рік тому

    терминологически Агрегация предшествовала и когда и АТД (clu привет) ужо были. ведь инкапсуляция (в ру предшественик капсуль в известно чём да и капсула с чем либо либо капсула спускаемого аппарата тож намекает какбе) - ООП хайп при той ещё хрупкой мат опоре - даже структурное программирование (да да теорема Боема-Якопини) за несколько десятилетий дало и культ и норм инженерную практику - ща вон наследование везде той же агрегацией лучшие дома рекамендуют замещать
    ваще Сокрытие оно бывает полезным в первую очередь для снижения графа связности

  • @Qustoos
    @Qustoos 11 місяців тому

    👍👍👍👍

  • @АлександрБартош-л5ы

    скину своему другу "старообряднику", который именно так и говорит слово в слово "Python не поддерживает ООП, в нём же нет инкапсуляции".)

    • @pythonclinic
      @pythonclinic  Рік тому +2

      начиная с версии 3.0 Python и ООП это синонимы)

  • @nightmind1
    @nightmind1 Рік тому

    Хм... теперь понятно, почему питон не любят безопасники.
    Я вот базист, пишу на PL/SQL, и у меня в пакете (во многом аналог объекта) может скажем быть приватный метод, который делает что-то серьёзное, например, очищает/перезаливает таблицу, заданную в параметре.
    А зовётся он из публичной процедуры, которая проверяет к примеру, что запрошенная таблица у меня в списке разрешённых. И вот я даю права на исполнение такого объекта некоторому пользователю.
    У меня чётко прописано что достучаться до очистки можно только через проверку. Иначе у пользователя, которому выданы эти права, не выйдет.
    А в питоне, получается, таких гарантий нет, и любой кулхацкер сотворит что угодно. Нет?

    • @pythonclinic
      @pythonclinic  Рік тому

      В пайтон такую же ситуацию спокойно можно организовать, возможность получить куда-то доступ мимо инкапсуляции всегда есть только у программиста, как уж он напишет, так и пользователь потом будет ходить. А безопасники могут не любить пайтон, потому что он интерпретируемый, можно легко исходники программы восстановить.

  • @arinawitch6928
    @arinawitch6928 5 місяців тому

    извиняюсь, можно ли подробнее объяснить смысл слова "интерфейс"...? (для новичков...) по смыслу его можно заменить на слово "описание" или это все же скорее шаблон для реализации методов в классах-наследниках?

    • @pythonclinic
      @pythonclinic  5 місяців тому +1

      в самом широком смысле интерфейс это просто набор описаний всех поведений класса (имена методов плюс количество аргументов в них), в более узком смысле можно трактовать имеено так, как вы написали, шаблон для реализации

    • @arinawitch6928
      @arinawitch6928 5 місяців тому

      @@pythonclinic спасибо!

  • @ИннаЛиксакова-о4н

    интересно, но все же более интересует момент, а как думают сами разработчики пайтона (например в вашем отделе)? если я на собеседовании скажу, что инкапсуляция это не только сокрытие, а нечто больше, но что инкапсуляция включает в себя сокрытие, со стороны человека, который будет меня собеседовать, это будет как больше плюс или как минус ? Собственно говоря в чем вопрос мой, есть такие вещи над которыми разработчики могут спорить постоянно и единого ответа нет, а есть все же вещи, на которые есть единый правильный ответ. Инкапсуляция относится к первому или ко второму ?

    • @pythonclinic
      @pythonclinic  Рік тому +2

      и к первому, и ко второму) я рекомендую пользоваться более широким определением в стиле "предоставление интерфейса для работы с данными", и дополнительно пояснить, что сюда входит и сокрытие данных тоже, несмотря на то, что в пайтон оно номинальное
      на интервью наша цель всё-таки пройти интервью, лучше бить по площади))

  • @Oleg_Zhigulin
    @Oleg_Zhigulin Рік тому

    Как на интервью тебе рассказать, что такое инкапсуляция???

    • @pythonclinic
      @pythonclinic  Рік тому

      это хороший вопрос, я бы советовал в целом так и говорить - инкапсуляция это принцип хранения всех параметров объекта в рамках одного контейнера и предоставление интерфейса для взаимодействия с параметрами/контейнером, этот интерфейс определяет способы взаимодействия и в том числе сокрытия данных
      но вообще я к процессу интервью подхожу демократично, лично мне можно что угодно говорить)

    • @Oleg_Zhigulin
      @Oleg_Zhigulin Рік тому

      @@pythonclinic ну вот про сокрытие данных это же не так)))) скрываем то реализацию, мы предостовляем api к примеру с методом calc_distance, а как эта дистанция считается не показываем
      Или еще один пример висят часы на стене показывают время, а как это время считается никто не знает кроме производителя

    • @pythonclinic
      @pythonclinic  Рік тому

      хорошая формулировка, вы приняты))