#32. Менеджеры контекстов. Оператор with  | Объектно-ориентированное программирование Python

#32. Менеджеры контекстов. Оператор with | Объектно-ориентированное программирование Python

selfedu

2 года назад

29,342 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@user-ob1jz8yl6x
@user-ob1jz8yl6x - 12.01.2024 03:34

в UI библиотеке Gradio очень непонятное использование менеджера контекста
import gradio as gr
with gr.Blocks() as demo:
gr.Markdown("...")
with gr.Tab("Flip Text"):
gr.Markdown("...")
demo.launch()

Не понятно как это работает)

Ответить
@user-pg8ry1tm3t
@user-pg8ry1tm3t - 06.01.2024 14:24

Для чего нужен менеджер контекста и где его применять?.. для безопасности кода и применять везде где только можно. Имхо. Потому как класс который создаёт объект и должен его уничтожать… особенно если вы работаете с ресурсами. Инициализация как захват ресурса

Ответить
@user-pg8ry1tm3t
@user-pg8ry1tm3t - 06.01.2024 14:14

Вопрос на 7й минуте - когда мы создаём enter метод, присходит переприсваивание, и таким образом копируем объект, копирование поверхностное или глубокое?.. вообще в питоне при вот таком переприсваивании какое копирование происходит?..

Ответить
@user-pg8ry1tm3t
@user-pg8ry1tm3t - 06.01.2024 14:08

Ошибку поправьте или меня - имя переменной мен контекста полагаю должно быть fp, а не f… (2-я минута)

Ответить
@user-pg8ry1tm3t
@user-pg8ry1tm3t - 06.01.2024 14:05

Ура! В питоне тоже есть идиомы владения🥴 безопасность повышаем🤪

Ответить
@whiterabbit6211
@whiterabbit6211 - 30.12.2023 11:28

Классное объяснение!

Ответить
@baldman6804
@baldman6804 - 20.10.2023 14:48

Уже вроде и с ООП разобрался, декораторы, генераторы, на джанго и DRF написал несколько приложений, но вот менеджер контекста все равно вызывает у меня трудности. 😅

Ответить
@alexanderivlev8458
@alexanderivlev8458 - 16.10.2023 17:36

все понял, кром того как это работает: self.__v[:] = self.__temp

Ответить
@Alex_Gor_1
@Alex_Gor_1 - 11.10.2023 18:47

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

Ответить
@Cygni7
@Cygni7 - 02.09.2023 16:26

Спасибо за урок! Хочу задать вопрос, как вы выделяя несколько строк помещаете их все в комментарии (# перед всеми) или ставите перед всеми отступ (tab)? Просто когда я так делаю в pycharm, строки попросту заменяются. Это настраивается как - то? Заранее спасибо.

Ответить
@user-qj6tk5fw9p
@user-qj6tk5fw9p - 26.07.2023 14:08

спасибо! интересный урок

Ответить
@user-qh4zz2kg7r
@user-qh4zz2kg7r - 15.07.2023 19:58

Спасибо автору, лучший канал как по мне

Ответить
@user-yo2oi7qz3l
@user-yo2oi7qz3l - 28.06.2023 14:19

Сергей, а можете поподробнее сказать по поводу return False в exit

Ответить
@Anonim-im6ln
@Anonim-im6ln - 30.04.2023 10:53

👍👍👍👍👍👍👍

Ответить
@user-bd9bf5kw3l
@user-bd9bf5kw3l - 28.04.2023 20:08

Думаю стоило упомянуть хотя-бы разок, что используя конструкцию среза вы получаете поверхностную копию списка, для полного копирования (например когда у вас список объектов) можно использовать deepcopy из библиотеки copy.

Ответить
@dimakost9900
@dimakost9900 - 19.04.2023 11:31

Сорри, но этот урок у вас вышел очень запутанным и непонятным

Ответить
@micropp205
@micropp205 - 29.03.2023 15:24

Официально заявляю. Более полезных уроков по питону, я не видел. Двужище, ты лучший.

Ответить
@siarheiulas6969
@siarheiulas6969 - 25.03.2023 13:48

Большое спасибо за замечательный урок и за этот курс!!!

Ответить
@Developer_python_
@Developer_python_ - 12.03.2023 20:48

Наверное первая тема которая до конца не ясна В частности все случаи с параметрами exit- но пока для работы достаточно и этих знаний

Ответить
@sadkid4660
@sadkid4660 - 18.02.2023 01:26

Спасибо за реально крутое объяснение менеджера контекста.

Ответить
@wasd1338
@wasd1338 - 08.12.2022 01:19

предыдущий материал курса ООП зашел на ура. но в этой теме возникла какая-то каша.

1) на 2.50 Вы пишете заголовок слайда "Менеджер контекста (with)" и вначале говорите "ключевое слово with, то есть это и есть менеджер контекста". на том же слайде на 2.50 написано, что менеджер контекста идет после ключевого слова with. так что из этого все же менеджер контекста?

2) еще больше путаницы внес первый тест после видео. один из вариантов ответа "менеджер контекста образует свою локальную область видимости (подобно функциям, тело которых находится внутри локальной области видимости)". в видео же вы создаете менеджер контекста - класс DefenderVector, далее пользуетесь экземпляром этого класса как менеджером контекста. т.е. у менеджера контекста есть своя локальная область видимости, в которой при инициализации формируется переменная self.__v. тогда почему указанный вариант ответа в тесте неправильный? исходя из того, что этот вариант ответа не верный, стоит полагать все же что менеджер контекста это with? однако для примера создания менеджера контекста вы прописываете то, что идет ПОСЛЕ with.

3) допустим, менеджер контекста - это объект после with. тогда если мы пишем with open('file') as file менеджером контекста будет open()? но ведь это же стандартная функция питона, а не менеджер контекста.

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

Ответить
@user-ee1lx1pe7n
@user-ee1lx1pe7n - 26.06.2022 20:33

Спасибо! Гениально!

Ответить
@t0xicav3ng3r4
@t0xicav3ng3r4 - 06.06.2022 22:20

Великолепный урок! Спасибо за то, что Вы делаете)

Ответить
@ADen-qx6co
@ADen-qx6co - 19.05.2022 14:03

все понятно кроме
self.__v[:] = self.__temp

вроде более логичной выглядит запись
self.__v = self.__temp
но тогда self.__v приобретает ссылку на другой объект (изменяется id), а v1 продолжает ссылаться на изначальный список со старым id

после присвоения self.__v[:] = self.__temp
self.__v стал ссылаться на другой список, при том у него остался изначальный id
за ним поменяется и v1

Получается, в результате self.__v[:] = self.__temp
старый список затирается и там где он хранился в памяти возникает новый список?
не понимаю логику. можно где то подробнее это разузнать?

Ответить
@gore_ot_uma166
@gore_ot_uma166 - 12.04.2022 16:44

Я правильно понимаю, что именно слово with определяет порядок вызова и делает сам вызов методов _enter__, __exit_ ? потому как код dv = DefendVector(v1)... не работает, хотя методы в классе переопределены

Ответить
@return_1101
@return_1101 - 17.01.2022 00:22

Хорошие уроки. Нам ещё везёт что нет задании. ☺️☺️☺️

Ответить
@kamilgabdullin
@kamilgabdullin - 16.01.2022 22:32

Большое спасибо! Хотлеось бы более подробно узнать про остальные праметры в _exit_

Ответить
@user-xi3uv5tn5y
@user-xi3uv5tn5y - 16.01.2022 19:33

Два дня не мог понять, почему при изменении "self.__v" меняется сам "v1", ведь нигде нет кода типа: "v1 = self.__v[:]".
В итоге до меня дошло, что "v1", "v", "self.__v" это все ссылки на один и тот же список, у них у всех один и тот же id, и меняя один мы меняем все остальные.

Ответить
@user-qu6xy9nr4s
@user-qu6xy9nr4s - 16.01.2022 00:34

Круто! Вы где учились?

Ответить
@evkny
@evkny - 15.01.2022 21:36

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

Ответить
@user-rg6yg7xz8q
@user-rg6yg7xz8q - 15.01.2022 17:38

подскажи пожалуйста не могу врубиться) то что мы делаем в def _enter_ когда копируем список через self._temp = self.__v[:] понятно. а то что мы делаем в def __exit_ когда обратно копируем уже измененный список self.__v[:] = self.__temp в self.__v. что тут делает [:] непонятно(

Ответить
@user-tb2jp7kg2c
@user-tb2jp7kg2c - 15.01.2022 16:57

Спасибо! Получается, что open это все таки не функция, а целый класс, где реализованы методы enter, exit, call? Т.е. мы можем в свой любой класс добавить функциональность менеджера контекста?

Ответить
@user-cn9zq9th7y
@user-cn9zq9th7y - 15.01.2022 14:55

Большое спасибо. Очень интересно и полезно. Применю.

Ответить
@radceb2474
@radceb2474 - 15.01.2022 13:50

👍

Ответить
@Volodymyr_Honcharov
@Volodymyr_Honcharov - 15.01.2022 12:21

Спасибо :)

Ответить
@user-xv7sh6lp7o
@user-xv7sh6lp7o - 15.01.2022 10:29

Спасибо большое !

Ответить
@user-gy9by2ly9x
@user-gy9by2ly9x - 15.01.2022 10:17

Добрый день! Спасибо большое за все Ваши уроки. Они очень полезны. Хотел спросить а по ООП в Python не планируется ли курс на Stepik?

Ответить
@ibrahimoglu
@ibrahimoglu - 15.01.2022 09:21

👍

Ответить
@pseudonym2
@pseudonym2 - 15.01.2022 09:02

Спасибо за уроки!

Ответить