#3. Инициализатор __init__ и финализатор __del__ | Объектно-ориентированное программирование Python

Поделиться
HTML-код

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

  • @TimBul-jp2jp
    @TimBul-jp2jp Год назад +16

    Пример идеального объяснения материала! Гений преподавания! Спасибо огромное за этот труд, "разжевали", осталось только "в рот положить...". Побольше таких материалов и можно не переживать за обучение будущих поколений. Буду рекомендовать ваш видео курс, еще раз спасибо за титанический труд!

  • @mslq
    @mslq Год назад +12

    Лучшего учителя по Python я больше не встречал, хотя долго искал, понял что книги важней чем видео, но здесь что то изумительно дословно и понятно объясняется.

  • @Makzonorhere
    @Makzonorhere Год назад +5

    Сначала ставлю лайк, потом смотрю видео, как жаль, что я не нашёл ваш канал раньше!

  • @MentoSGaming27rus
    @MentoSGaming27rus 2 года назад +81

    Спасибо большое! Есть лишь одно пожелание
    добавляйте домашнее задание, как Вы это делали в прошлом варианте курса по ООП

    • @kat_katchinskiy
      @kat_katchinskiy Год назад +10

      Теория без практики мертва)

  • @serg5978
    @serg5978 2 года назад +13

    самые внятные и толковые объяснения из всех, что я видел

  • @86Blind
    @86Blind 2 года назад +25

    Ни одного лишнего слова. Все структурированно и по делу. Талант !

  • @Yar1989
    @Yar1989 6 месяцев назад +2

    Только благодаря этому видео мне стало понятно почему self.x = x))) Да и все остальные вопросы сразу прояснились. Спасибо большое!😀

  • @user-jo5ij6df1d
    @user-jo5ij6df1d Год назад +10

    Спасибо за такой маленький и такой длинный урок! Луч света в темном царстве основ ООП. )))

  • @KonstantinPrydnikov1
    @KonstantinPrydnikov1 2 года назад +6

    Спасибо, что не упускаете детали и акцентируете на них внимание. Достойный курс

  • @user-yl4xi3ce7x
    @user-yl4xi3ce7x 4 месяца назад +2

    Ура, я начинаю понимать ООП на питоне! Спасибо, Сергей!

  • @13_chasov_nochi
    @13_chasov_nochi 2 года назад +1

    У вас самые понятные объяснения по этой теме , спасибо

  • @user-qh4zz2kg7r
    @user-qh4zz2kg7r Год назад +1

    Разобрался только благодаря Вам, теперь в коде все ясно.

  • @ARSEN55630
    @ARSEN55630 Год назад +3

    Просто те шо я шукав вся інформація шо мені нада ти самий лучиш!

  • @user-sx2zv3lv5w
    @user-sx2zv3lv5w 2 года назад +3

    Вы просто гений
    У меня слов нету!

  • @matsveiv6712
    @matsveiv6712 Месяц назад +1

    Все очень понятно и просто. Спасибо вам огромное!

  • @qryak
    @qryak 9 месяцев назад +1

    твои видосы и объяснения просто шедевр

  • @empty9228
    @empty9228 Год назад +1

    Сергей, спасибо за урок!

  • @user-uz5pn7ol4g
    @user-uz5pn7ol4g 2 года назад +10

    Спасибо огромное! Когда-то именно из-за ООП забросил изучать программирование и собственно свой первый ЯП, тогда уж не мог нормально понять значение self, читал книгу по питону, на гитхабе читал разъяснения, но вот как пару месяцев назад снова влился в это всё, то ваш канал поставил мне определенную планку, из-за которой я каждый день или через день импруфаюсь

    • @mslq
      @mslq Год назад

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

  • @margaritashetkina811
    @margaritashetkina811 Год назад

    спасибо за ваш труд) одно удовольствие слушать

  • @Winter_Breezze
    @Winter_Breezze 7 месяцев назад +1

    Спасибо за Ваши уроки! Всё очень подробно и доходчиво. В этом уроке с ходу не понял, почему сработал финализатор. Нагуглил следующее:
    Счётчик ссылок для объекта становится нулевым, когда работа программы завершается.
    Может, пригодится кому-то.

  • @LazerShrk
    @LazerShrk 10 месяцев назад +2

    Занимаюсь разработкой уже года 3, но ООП для меня всегда был какой то противной темой))) Вы первый человек, который смог доходчиво донести материал, спасибо огромное!

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

    Спасибо тебе! Так смачно всё разъяснить смог только ты почему-то

  • @sqrooch662
    @sqrooch662 2 года назад +2

    Благодарю за видео!

  • @averzhi
    @averzhi Год назад +1

    Великолепно) Спасибо большое!💛🙏

  • @ussenUtebayev
    @ussenUtebayev Год назад +5

    Ахах минут 15 сидел не понимал почему не работает и уже лез в инет оказывается вместо __init__ написал __int__ будьте внимательно друзья если некоторые вещи пишет IDE

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

      Спасибо, я тоже ))))))))))

  • @Vlad1998996
    @Vlad1998996 2 года назад +2

    спасибо за ролик!

  • @pal181
    @pal181 2 года назад +47

    Хотелось бы увидеть примеры использования __del__, трудно представить зачем он может пригодится, вне чисто учебного материала.

    • @user-mp4yx7ss8b
      @user-mp4yx7ss8b 2 года назад +16

      К примеру написана утилита, которая в режиме реального времени выдает количество коннектов к БД экземплярами определенного класса. Сам класс подсчитывает их средствами счетчика - интового атрибута уровня класса.
      То есть когда инстанс класса создается: атриубут уровня класса инкрементируется на 1. Тут как раз нужен del, так как при дропе экзмепляра будет вызван данный дандер метод, где нужно будет декрементировать атриубут уровня класса на 1.
      Разуеется можно юзать не простой счечик, а более сложную структуру по типу словаря, куда заносить доп данные: какой адрес БД, под каким юзером и т.д.

    • @user-fd8gy7di6o
      @user-fd8gy7di6o Год назад +11

      @@user-mp4yx7ss8b что?

    • @karkozov
      @karkozov Год назад

      БД - база данных
      Инкрементирование - операция увеличения переменной (оператор инкрементирования += )
      Дандер, он же магический метод, он же метод с двумя нижними подчеркиваниями - Dunder
      Это по терминам, а по абстракции тоже не понял 😂 это уровень к которому нужно стремиться наверное на данном этапе )

    • @mslq
      @mslq Год назад

      @@user-mp4yx7ss8b спасибо за такую структуру - inc/dec, хотя пришлось несколько раз перематывать в начало, замедлять воспроизведение, но кажись понял. ))

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

      ​@@user-mp4yx7ss8b этот дендерный метод __del__ нужно прописывать явно в классе?

  • @Afghan-il5zv
    @Afghan-il5zv 8 месяцев назад

    То, что Вы делаете - очень ценно!

  • @andredru4278
    @andredru4278 2 месяца назад +1

    Спасибо. Все понятно.

  • @ftb2024_official
    @ftb2024_official Год назад +1

    Спасибо вам большое 🤝

  • @touchdasky985
    @touchdasky985 2 года назад +1

    Огромное спасибо!

  • @user-nt7cg6ok6f
    @user-nt7cg6ok6f 2 года назад +4

    Спасибо большое за курс! Вам хорошо удаётся объяснение) 😁
    Можно странный вопрос?
    На каком языке вы ещё говорите?

  • @torexanovich
    @torexanovich Год назад +1

    amazing teacher, thanks!

  • @user-lr1en6ls5f
    @user-lr1en6ls5f 2 года назад +9

    Было бы здорово добавить задания для самоподготовки🙃

  • @adammagomedov9822
    @adammagomedov9822 6 месяцев назад

    Спасибо огромное

  • @user-bb8sl6xe6e
    @user-bb8sl6xe6e Год назад

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

  • @EvgeniySakharov
    @EvgeniySakharov 6 месяцев назад +1

    Думал ни когда в жизни не дастся мне ООП. Вроде нормально пока. Понятно все. Едим дальше.)))

  • @user-rm9wd7qq6k
    @user-rm9wd7qq6k 2 года назад +5

    добрый день,спасибо за доступное изложение,но,хотелось бы,как в курсе по Python,получить домашку)))
    Еще раз Вам спасибо за курс)

  • @sledleo
    @sledleo 2 года назад +1

    Вот и чудненько!

  • @HeyArtem
    @HeyArtem Год назад +1

    Отлично Отлично!

  • @Nick-zu9bi
    @Nick-zu9bi 2 года назад +1

    Спасибо

  • @AdmiralUshakovvv
    @AdmiralUshakovvv 2 года назад +1

    Опаньки) а я ждал ;)

  • @jamjam3337
    @jamjam3337 Год назад +1

    спасибо!👏

  • @margaritashetkina811
    @margaritashetkina811 Год назад

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

    • @selfedu_rus
      @selfedu_rus  Год назад

      Спасибо! Практические задания по ссылке на курс на Stepik!

  • @user-rr7uh7fd9r
    @user-rr7uh7fd9r Год назад

    Привет Сергей.
    Учусь по твоим видеоурокам, мне нравятся твои уроки, ты молодец, респект! )
    Но, всё же я где то, что то не догоняю, а именно:
    Вот я создал 2 простые конструкции, одну магическую, другую нет
    class Hello_1:
    a,b,c = 10,20,30
    def __init__( self ):
    print( f'Hi: { self.a }, { self.b }, { self.c }' )
    print( a,b,c )
    Hello_1()
    def Hello_2():
    a,b,c = 1000,2000,3000
    def iinit():
    print( f'Hi-Hi: { a }, { b }, { c }' )
    iinit()
    print( a,b,c )
    Hello_2()
    Они обе выполняют одно и то же, делают это одинаково, выдают один и тот же результат, но я ни как не могу понять если они делают одно и тоже, а вторая проще, зачем нужна первая?? ))
    Я провел эксперименты, городил в обеих кучи заборов, но и та и другая дают одно и тоже! ))
    Что я не понял из твоих уроков? ))
    Спасибо заранее за твой ответ. )

    • @sense3247
      @sense3247 Год назад

      Посмотрите еще раз первый урок

  • @user-pr7gy3bq7n
    @user-pr7gy3bq7n 7 месяцев назад +1

    Пожалуй, это самый важный урок по ооп. Спасибо автору. Хотелось бы простенького примера графического приложения с виджетами. Непонятно, почему к виджету нужна приставка self?

  • @AzizjanAyupov_leo
    @AzizjanAyupov_leo 4 месяца назад +2

    Можно еще явно указать имя аргумента, которому передается параметр: pt = Point(y=1)

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

    👍👍

  • @ibrahimoglu
    @ibrahimoglu 2 года назад +1

    👍

  • @impellergimpeller5133
    @impellergimpeller5133 2 года назад +1

    👍👍👍👍👍

  • @user-iy3yo2wt1n
    @user-iy3yo2wt1n 2 года назад +1

    👍👍👍👍

  • @user-cn6kw6uk6z
    @user-cn6kw6uk6z 2 года назад +1

    А можно ли в методе __del__ сослаться на тот же класс в котором он создан,тем самым создать новый объект класса?

  • @user-tr5sq6qg5e
    @user-tr5sq6qg5e Месяц назад +1

    Одного меня терзают мысли как получилось что функция get__coords увилела методы self.x и self.y которые находятся внутри другой функции? Мы же такого не проходили в областе видимости

  • @vlad_vidan
    @vlad_vidan Год назад

    И снова топ оф зе топ)

  • @ivanbonadykov9624
    @ivanbonadykov9624 2 года назад +1

    Сергей , Здравствуйте, будет ли ролик про метапрограммирование?

    • @selfedu_rus
      @selfedu_rus  2 года назад +3

      Будет про метаклассы

  • @alexakashark4509
    @alexakashark4509 2 года назад +2

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

    • @selfedu_rus
      @selfedu_rus  2 года назад

      там неверно, это инициализатор и финализатор ))

  • @gbo4net
    @gbo4net 2 года назад +1

    Если у кого-то по каким-то причинам удаление объекта не проходит и нет надписи об удалении объекта:
    в конце кода вызовите
    >>> del имя_объекта (del object_X)
    ПРИМЕР для маленьких:
    del pt
    И class Point выдаст фразу об удалении объекта из метода
    # Удаление экземпляра
    def __del__(self):
    print('Удаление экземпляра:' + str(self))

  • @DaveTCraft
    @DaveTCraft Год назад +1

  • @igorzalutskyi5367
    @igorzalutskyi5367 2 года назад +2

    Спасибо за видео. У меня странный вопрос: Как я могу практиковать ООП, если в Джанго грубо говоря я использую всё готовое ? Плюс, где вообще место паттернам в веб- программировании?)

    • @selfedu_rus
      @selfedu_rus  2 года назад +5

      В больших приложениях, там где уже готовые паттерны типа Django не подходят или приходится писать свои модули для особенных фич.

  • @Mika-yq5nr
    @Mika-yq5nr 4 месяца назад +1

    6:22 В чем все таки различие между фактическими и формальными параметрами.
    Из вашего базового курса (урок #38):
    "Можно задавать параметры со значениями по умолчанию . Такие параметры называются формальными, а обычные - фактическими. В чем отличие формальных параметров от фактических, помимо значений по умолчанию? Их не обязательно прописывать при вызове функции."
    В интернете (разные источники):
    "Формальные параметры - это переменные или значения, которые объявляются в определении функции, метода или другого объекта. Они определяют, какие аргументы могут быть переданы в функцию или метод. Фактические параметры - это значения, которые передаются в функцию или метод при вызове. "
    Получается (исходя из интернета), что все параметры объявленные в определении функции - формальные. Они могут быть и со значением по умолчанию и без. И короче помогите я запутался

    • @light8032
      @light8032 3 месяца назад

      ​@@SayXaNowиди учись и потом пиши

    • @SayXaNow
      @SayXaNow 3 месяца назад

      @@light8032 с чем-то не согласен? - аргументированно обоснуй. Иначе подобный комментарий выглядит как банальный пердеж в муку. Но ты, чёрт возьми, прав, это я лох, в очередной раз повелся на вольную интерпретацию Серёги. Он в своей лекции подменил понятия позиционных и именованных аргументов, на фактические и формальные. Что-то слишком часто у него стало проскальзывать "свое видение" некоторых понятий. В теме по регэкспу тоже лютую дичь городил. Надо быть осторожнее и коммент на всякий случай снес, чтобы не вводил людей в заблуждение, ибо там была копипаста Серёгиной лапши.

  • @SaVa_144
    @SaVa_144 9 месяцев назад

    Как я понимаю курс на степике жители других стран не могут приобрести?

  • @girrra1233
    @girrra1233 2 года назад +1

    Подскажите у вас есть видео про правило Видроу Хоффа?

  • @ibragimn8920
    @ibragimn8920 Год назад +3

    А почему в вашем случае произошло удаление объекта? Вы ведь не переопределяли переменную pt, которая ссылается на него?

    • @selfedu_rus
      @selfedu_rus  Год назад +3

      программа завершилась и там уже все объекты автоматом удаляются

  • @user-ly7mq3fz7k
    @user-ly7mq3fz7k Год назад +1

    Вы в Москве преподаете?

  • @davgf438
    @davgf438 Год назад +1

    Добрый день! Прекрасные уроки.
    Подскажите пожалуйста, на протяжении лекции было 2 не задействованные функции из пред. урока (set и get coords). Без них всё работает. Вы их просто не убрали или они для чего то здесь нужны?

    • @selfedu_rus
      @selfedu_rus  Год назад +1

      Я вначале показываю, как можно через эти методы формировать и записывать данные в локальные атрибуты объекта класса. Потом показываю, что это лучше делать через инициализатор. Ну а методы, да, остались, ими можно пользоваться, если нужно изменить соответствующие значения.

    • @davgf438
      @davgf438 Год назад

      @@selfedu_rus Благодарю за разъяснение!

  • @user-uq3go4uk6p
    @user-uq3go4uk6p Год назад +1

    я люблю тебя

  • @timurdjumaniyazov9392
    @timurdjumaniyazov9392 Год назад +1

    Доброго дня всем! Подскажите, пожалуйста, __del__ получается очищает память?

    • @selfedu_rus
      @selfedu_rus  Год назад +1

      нет, очищает сборщик мусора и когда это произойдет никто не знает ))

  • @igorxjarvinen
    @igorxjarvinen Год назад +1

    а зачем оставили set_coords, если ___init___ делает то же самое?

  • @ResellerRus
    @ResellerRus Год назад +1

    В последнем примере был удалён объект класса Point, но ссылка pt на него была прописана в файле, и перед самим удалением были даже выведены значения объекта. Почему так? После отработки программы удаляются все объекты, которые она инициализировала?
    ТО-есть, получается, что в момент запуска программы, она создаёт объекты в памяти, которые мы прописали в файле, проделывает заданную программу, а потом всё стирает, чтобы освободить память?

    • @selfedu_rus
      @selfedu_rus  Год назад

      Не до конца понял вопроса. У нас есть объект pt класса Point, внутри класса определен финализатор del. Когда сборщик мусора освобождает память, занимаемую объектом, вызывается финализатор. До тех пор объект существует в памяти. Ну и когда программа завершается, то конечно, все выделенные ресурсы освобождаются.

    • @ResellerRus
      @ResellerRus Год назад

      @@selfedu_rus Аа, понятно, а подскажите ещё, пожалуйста. Я изучаю django и в нём есть предустановленные модели. Так вот, когда мы создаём собственную модель для базы данных, где хранятся ссылки на экземпляры этих классов или они сами? И в какой момент они создаются? В момент добавления записей на сайте?
      Просто, ранее, в Python, мы привязывали экземпляр к переменной, и там было всё понятно, а здесь никаких явных привязок не видно.

    • @selfedu_rus
      @selfedu_rus  Год назад

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

  • @VasArkady
    @VasArkady 2 года назад +2

    При реализации в классе магического метода __del__ и инициализации объекта класса нулем, данный метод не вызывается, однако он вызывается при явном удалении объекта с помощью del.

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      Она вызовется когда сборщик мусора его станет удалять.

  • @user-de3op9hs4p
    @user-de3op9hs4p 5 месяцев назад +1

    Сергей, почему когда мы пишем метод
    def __del__(self):
    print('чего-то там, мол удалено')
    мы его не переопределяем? Ведь он, по идее, теперь должен только писать, что удалил что-то, но не удалять в действительности.
    А если он не переопределяется, то почему такое не работает с __new__?

    • @selfedu_rus
      @selfedu_rus  5 месяцев назад

      метод del() действительно не удаляет объект, он вызывается, когда сборщик мусора собирается его удалить (то есть, непосредственно перед удалением объекта), но когда это произойдет - неизвестно. Метод new() также можно переопределять без проблем и вызывается он непосредственно перед созданием самого объекта. Причем, для создания нужно вызвать аналогичный метод из базового класса object.

  • @sergeyvereschagin7907
    @sergeyvereschagin7907 Месяц назад +1

    Добрый день! Вопрос по удалению. Я создал обьект PT. Далее отработало удаление. Но по факту если я обращусь из юпитера к этому обьекту - то он никуда не девался. Не до конца понятно, он удаляет из памяти, но где же тогда сохраняется обьект?

    • @imadna5810
      @imadna5810 Месяц назад

      потому что он забыл прописать del.PT мы создали метод но не использовали его
      PT = Point()
      del.PT
      просто забыл, видимо

  • @vladik_pwnz
    @vladik_pwnz 2 года назад +1

    странно, но почему-то в пайчарме __del__ работает отлично, удаляет действительно после того, как объект стал не нужен и именно тот объект с той же ссылкой, что и был создан.
    а если записать тот же пример в юпитер ноутбуке, то там всегда удаляет сразу после вызова __init__ какой-то левый объект c другим адресом.

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      там, немного другая среда и логика функционирования, вполне может быть

    • @smgbdr4338
      @smgbdr4338 Год назад

      Пробовал разобраться, если актуально, то вот к чему пришёл сам:
      jupyter сохраняет объект до следующего запуска текущей ячейки, либо иной ячейки, где будет создан новый объект pt. Т.е. jupyter считает, что объект pt ещё тебе может пригодиться. И в памяти будет существовать старый объект pt до момента его пересоздания в текущей или последующих ячейках.
      Также протестил: с закрытием .ipynb все объекты удаляются.

  • @inuhu5547
    @inuhu5547 Месяц назад +1

    Зачем нужно прописывать __del__, если коллектор все подчистит ?

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

    Нужно ли деструктор __del__ объявлять в классе явно? Или стоит только переопределять его при необходимости добавить новый функционал?

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

      нет, не нужно и почти никогда не определяют

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

      @@selfedu_rus благодарю!

  • @maxliar6069
    @maxliar6069 3 месяца назад +2

    норм

  • @user-qx2uw4qg1h
    @user-qx2uw4qg1h 2 года назад

    у меня вопрос
    когда создается объект класса, например test = Class() то как вывести такой принт - "Создается объект test
    то есть вывести имя переменной которая и будет объектом класса

    • @selfedu_rus
      @selfedu_rus  2 года назад

      В init или new прописываете и все, обычно в init такое пишут

    • @user-qx2uw4qg1h
      @user-qx2uw4qg1h 2 года назад

      @@selfedu_rus если написать в ините такое то будет выдан адрес. если переопределить метод __str__ то будет ошибка, как я понял какая то зацикленность получится. пробовал в юпитере - не получилось короче.

  • @pwufora
    @pwufora Год назад +1

    7:46 то есть он финализировался, когда закончилось выполнение кода?

    • @selfedu_rus
      @selfedu_rus  Год назад

      у меня да, но когда именно сборщик мусора его финализирует никто точно не скажет

  • @nikprilutskiy7064
    @nikprilutskiy7064 Год назад

    Не понял, а ЧТО именно удалится когда мы пишем __del__(self) ? Объекты, на которые ссылались X и Y ?

    • @selfedu_rus
      @selfedu_rus  Год назад

      этот метод вызывается перед освобождением памяти, который занимает объект класса

  • @user-ou7fw1sg1r
    @user-ou7fw1sg1r 2 года назад +1

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

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      В практике не встречалось, т.е. это очень редко используется, фактически, заложена такая возможность, надо - делаем, не надо - не делаем :)

    • @mantrida
      @mantrida 2 года назад +7

      Не понял... Что значит вызывается без фактического написания метода в классе ? Если метода в классе нет, то он и не вызывается... Метод __del__ не удаляет объект, он выполняет финальные операции перед удалением (если таковые требуются). Удаляет сборщик мусора. Ну если я сам всё правильно понял )

    • @selfedu_rus
      @selfedu_rus  2 года назад +2

      @@mantrida Совершенно верно!

    • @kurtmiller77
      @kurtmiller77 2 года назад +7

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

    • @gienek_mscislawski
      @gienek_mscislawski 2 года назад +4

      @@mantrida спасибо за пояснение, а то из ролика это с трудом улавливается. Не расставлены акценты.

  • @andreychernykh256
    @andreychernykh256 2 года назад +2

    подскажите пожалуйста, сколько человек прошли полностью ваш курс?

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      какой?

    • @andreychernykh256
      @andreychernykh256 2 года назад

      @@selfedu_rus добрый, добрый пайтон

    • @selfedu_rus
      @selfedu_rus  2 года назад +2

      @@andreychernykh256 я думаю, человек 200-300

  • @vladimirastrelin1719
    @vladimirastrelin1719 Год назад +1

    Спасибо...сложно придумать понятнее урок...я летаю ..я в раю (с) Литвинова

  • @evgenmonkay
    @evgenmonkay 6 месяцев назад

    Становиться понятно, когда нет Х, У и прочего.
    Нужно показывать суть в действии на примере окон, кнопок, действий.
    А так это просто баловство цифрами и буквами.
    Алгоритм для людей:
    Код = наглядный пример (приложение, окно с кнопкой, цвет, звук)

  • @eklatov
    @eklatov 2 года назад

    у меня вопрос почему сразу когда хочешь установить данные которые тебе надо почему сразу это не писать в методе типо так:
    class Point:
    color = 'red'
    circle = 2
    def __init__(self):
    self.x = 8
    self.y = 4

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

      Объектов класса обычно больше 1, с таким подходом у всех будут одинаковые данные со старта. Если захочется другие координаты(пример), придется переопределять их каким то методом. Если у вас 1000 точек, то для каждой прописывать то, что можно сделать при создании объекта как минимум утомительно. Надеюсь стало понятнее

  • @HubaBuba2007
    @HubaBuba2007 22 дня назад +1

    раз объект удален, тогда почему к нему все еще можно обращаться?

    • @selfedu_rus
      @selfedu_rus  22 дня назад

      задайтесь вопросом: что значит объект удален?

  • @luckytima2315
    @luckytima2315 2 года назад +1

    На stepik баг, я не могу отзыв на курс оставить

    • @selfedu_rus
      @selfedu_rus  2 года назад

      странно, другие вроде писали...

    • @mantrida
      @mantrida 2 года назад +1

      Вы его прошли ? Там надо 80 % пройти, чтобы можно было отзыв оставлять...

    • @shyma_grasious
      @shyma_grasious 2 года назад

      там можно поставить отзыв только на странице отзывов. У меня тоже такое было.

  • @user-gd4en4ot3u
    @user-gd4en4ot3u 6 месяцев назад +1

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

    • @SayXaNow
      @SayXaNow 3 месяца назад

      программа завершилась. а перед завершением естественно все удаляется из памяти

    • @user-gd4en4ot3u
      @user-gd4en4ot3u 3 месяца назад

      @@SayXaNow спасибт

  • @BLITZBURY
    @BLITZBURY Год назад

    Получается метод __init__ это конструктор а __del__ деструктор?

    • @selfedu_rus
      @selfedu_rus  Год назад

      нет, инициализатор и финализатор, за конструктор отвечает метод __new__

  • @SASka-ct7zj
    @SASka-ct7zj 2 года назад

    Я не понял через dict можно вызвать как словарь, или через geter типо там return ,а просто pt написать ,просто компа нету
    Я этот момент не догнал!

  • @AdmiralUshakovvv
    @AdmiralUshakovvv 2 года назад +1

    малоо, ещее)

  • @OldHaggler
    @OldHaggler Год назад +1

    Я только пробую, просьба камнями не кидать. А в чем разница внутри класса между обычным "переменная = значение" и "def __init__: self.переменная = значение"? Пробовал- и так и так- всё "принтится" и изменяется как при обращении к классу так и к экземпляру класса.

    • @selfedu_rus
      @selfedu_rus  Год назад

      ответ в этом уроке ruclips.net/video/P4CNNo8jWj4/видео.html

    • @OldHaggler
      @OldHaggler Год назад +2

      @@selfedu_rus благодарю за оперативность, думал что за веткой уже не следят) посмотрю

  • @user-wn8re9jv2b
    @user-wn8re9jv2b 2 года назад +1

    Зачем так написать ?? Когда можно просто написать в конструкторе??
    Зачем переменные pt??

  • @Voron88888888
    @Voron88888888 Год назад +2

    Инициализатор это то же самое, что и конструктор в c#

    • @selfedu_rus
      @selfedu_rus  Год назад +2

      в Python это не так, конструктор - это метод __new__

  • @dadyx85
    @dadyx85 Год назад +1

    Конструктор и деструктор? 🤔

    • @selfedu_rus
      @selfedu_rus  Год назад

      инициализатор и финализатор

    • @dadyx85
      @dadyx85 Год назад

      @@selfedu_rus в другом виде у вас сказано - конструктор и деструктор😁

    • @selfedu_rus
      @selfedu_rus  Год назад

      @@dadyx85 там неправильно - там старый курс, позже удалю, наверное

    • @dadyx85
      @dadyx85 Год назад

      @@selfedu_rus нее. Не удаляйте, пожалуйста. Я и тот смотрю и этот. 👍

  • @user-gc2gt1mm5r
    @user-gc2gt1mm5r Год назад

    у меня __del__ не срабатывает

    • @selfedu_rus
      @selfedu_rus  Год назад

      это возможно, очистка происходит в непредсказуемые моменты времени )

  • @user-nn5oj7jl4w
    @user-nn5oj7jl4w 2 месяца назад +1

    на 100К убавилось просмотров 🤣🤣🤣🤣🤣🤣🤣🤣

  • @shyma_grasious
    @shyma_grasious 2 года назад +1

    по сути инит это конструктор

    • @selfedu_rus
      @selfedu_rus  2 года назад +1

      Нет, только инициализатор, конструктор, скорее __new__. Если на собесе сказать как вы, сразу отправят на доучку )

    • @shyma_grasious
      @shyma_grasious 2 года назад

      @@selfedu_rus спасибо запомню), я просто не смотрел дальше видосики) сразу аналогию с джава скриптом как то провел)

  • @Itbobojonov-ml1qz
    @Itbobojonov-ml1qz Месяц назад +1

    0:45 методы? может функции лучше называть? слушатель может запутаться

    • @selfedu_rus
      @selfedu_rus  Месяц назад

      между методами и функциями есть одно важное отличие: методы, как правило, связаны с тем или иным объектом класса и потом им первым параметром передается self; у обычных функций такого нет

  • @matmansky9348
    @matmansky9348 Год назад

    Я ведь правильно понял, что инициализатор и финализатор являются аналогами конструктора и деструктора в c++ / c# ?

    • @selfedu_rus
      @selfedu_rus  Год назад

      нет, аналоги конструктора - это __new__, а деструктора как такового нет

    • @matmansky9348
      @matmansky9348 Год назад

      @@selfedu_rus спасибо

  • @justcoding9118
    @justcoding9118 2 месяца назад +1

    я один называю "магические методы" дандер методами?