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

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 ม.ค. 2025

ความคิดเห็น • 192

  • @Slash77100
    @Slash77100 2 หลายเดือนก่อน +5

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

  • @Yar1989
    @Yar1989 ปีที่แล้ว +9

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

  • @TimBul-jp2jp
    @TimBul-jp2jp ปีที่แล้ว +22

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

    • @Unlimit-729
      @Unlimit-729 6 หลายเดือนก่อน

      Вы в рот себе и ложите нам не надо😂

  • @mslq
    @mslq ปีที่แล้ว +14

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

  • @Makzonorhere
    @Makzonorhere ปีที่แล้ว +7

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

  • @Winter_Breezze
    @Winter_Breezze ปีที่แล้ว +3

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

  • @ВикторПелих-я6ш
    @ВикторПелих-я6ш ปีที่แล้ว +14

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

  • @antahix
    @antahix 3 ปีที่แล้ว +88

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

  • @Programming_is_my_life
    @Programming_is_my_life ปีที่แล้ว +4

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

  • @Нуя-ъ7ш
    @Нуя-ъ7ш 2 ปีที่แล้ว +11

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

    • @mslq
      @mslq ปีที่แล้ว

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

  • @86Blind
    @86Blind 3 ปีที่แล้ว +25

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

  • @KonstantinPrydnikov1
    @KonstantinPrydnikov1 3 ปีที่แล้ว +8

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

  • @LazerShrk
    @LazerShrk ปีที่แล้ว +3

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

  • @serg5978
    @serg5978 3 ปีที่แล้ว +14

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

  • @ПавелАртемьев-п2и
    @ПавелАртемьев-п2и ปีที่แล้ว +2

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

  • @АлександрЛобанов-о2у
    @АлександрЛобанов-о2у 2 ปีที่แล้ว +1

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

  • @sofiipochta
    @sofiipochta 5 หลายเดือนก่อน +2

    Спасибо, посмотрела! интересно рассказываете

  • @lmishin
    @lmishin 2 ปีที่แล้ว +3

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

  • @jaksonmillka
    @jaksonmillka 3 หลายเดือนก่อน +1

    Урок #3 = Пройден
    Хоть и с __init__ у меня уже была практика, новое для себя узнал, что можно явно указывать значения по умолчанию.
    Так же узнал, что __del__ относится к сборщику мусора
    Перехожу к след уроку :)

  • @bvkiposs
    @bvkiposs ปีที่แล้ว +1

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

  • @matsveiv6712
    @matsveiv6712 8 หลายเดือนก่อน +1

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

  • @EvgeniySakharov
    @EvgeniySakharov ปีที่แล้ว +3

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

  • @pal181
    @pal181 3 ปีที่แล้ว +50

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

    • @РусланУразбахтин-д2в
      @РусланУразбахтин-д2в 2 ปีที่แล้ว +18

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

    • @ТимурБелянин-й3ф
      @ТимурБелянин-й3ф 2 ปีที่แล้ว +14

      @@РусланУразбахтин-д2в что?

    • @karkozov
      @karkozov ปีที่แล้ว +2

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

    • @mslq
      @mslq ปีที่แล้ว

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

    • @userituser8788
      @userituser8788 ปีที่แล้ว

      ​@@РусланУразбахтин-д2в этот дендерный метод __del__ нужно прописывать явно в классе?

  • @13_chasov_nochi
    @13_chasov_nochi 2 ปีที่แล้ว +1

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

  • @gbo4net
    @gbo4net 2 ปีที่แล้ว +2

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

  • @reina_0728
    @reina_0728 ปีที่แล้ว

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

  • @empty9228
    @empty9228 2 ปีที่แล้ว +1

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

  • @руимнкумирмко
    @руимнкумирмко ปีที่แล้ว

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

  • @margaritashetkina811
    @margaritashetkina811 2 ปีที่แล้ว

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

  • @averzhi
    @averzhi 2 ปีที่แล้ว +2

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

  • @margaritashetkina811
    @margaritashetkina811 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

  • @sqrooch662
    @sqrooch662 3 ปีที่แล้ว +2

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

  • @МаксимИванов-е6з
    @МаксимИванов-е6з 3 ปีที่แล้ว +10

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

  • @Sw0ky
    @Sw0ky วันที่ผ่านมา +1

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

  • @ЯрославБеляев-т5к
    @ЯрославБеляев-т5к 3 ปีที่แล้ว +4

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

  • @КРПТОС
    @КРПТОС 2 ปีที่แล้ว

    Привет Сергей.
    Учусь по твоим видеоурокам, мне нравятся твои уроки, ты молодец, респект! )
    Но, всё же я где то, что то не догоняю, а именно:
    Вот я создал 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 2 ปีที่แล้ว

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

  • @AzizjanAyupov_leo
    @AzizjanAyupov_leo ปีที่แล้ว +3

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

  • @МэриКирилова
    @МэриКирилова 2 ปีที่แล้ว +5

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

  • @Mika-yq5nr
    @Mika-yq5nr 11 หลายเดือนก่อน +1

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

    • @light8032
      @light8032 11 หลายเดือนก่อน

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

    • @SayXaNow
      @SayXaNow 11 หลายเดือนก่อน

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

  • @ussenUtebayev
    @ussenUtebayev ปีที่แล้ว +14

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

    • @HeyArtem
      @HeyArtem ปีที่แล้ว

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

    • @Unlimit-729
      @Unlimit-729 6 หลายเดือนก่อน

      Что такое IdE?

    • @ussenUtebayev
      @ussenUtebayev 6 หลายเดือนก่อน

      @@Unlimit-729 Попробуй закинуть этот вопрос в гугл

  • @ВладимирЛазарев-п3я
    @ВладимирЛазарев-п3я ปีที่แล้ว +1

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

  • @Vlad1998996
    @Vlad1998996 3 ปีที่แล้ว +2

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

  • @AdmiralUshakovvv
    @AdmiralUshakovvv 3 ปีที่แล้ว +1

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

  • @ftb2024_official
    @ftb2024_official ปีที่แล้ว +1

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

  • @sledleo
    @sledleo 3 ปีที่แล้ว +1

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

  • @touchdasky985
    @touchdasky985 2 ปีที่แล้ว +1

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

  • @ibragimn8920
    @ibragimn8920 2 ปีที่แล้ว +4

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +4

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

  • @Afghan-il5zv
    @Afghan-il5zv ปีที่แล้ว

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

  • @igorxjarvinen
    @igorxjarvinen ปีที่แล้ว +1

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

  • @ДенисМедведев-о7д
    @ДенисМедведев-о7д ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

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

  • @alexakashark4509
    @alexakashark4509 3 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

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

  • @HeyArtem
    @HeyArtem 2 ปีที่แล้ว +1

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

  • @ПлатонТрипуть
    @ПлатонТрипуть ปีที่แล้ว +1

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

  • @VasArkady
    @VasArkady 2 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

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

  • @SaVa_144
    @SaVa_144 ปีที่แล้ว

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

  • @DaveTCraft
    @DaveTCraft 2 ปีที่แล้ว +1

  • @timurdjumaniyazov9392
    @timurdjumaniyazov9392 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +1

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

  • @sergeyvereschagin7907
    @sergeyvereschagin7907 9 หลายเดือนก่อน +1

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

    • @imadna5810
      @imadna5810 9 หลายเดือนก่อน

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

  • @xandrviking1113
    @xandrviking1113 6 หลายเดือนก่อน +2

    Спасибо за уроки 🖖👍

  • @pwufora
    @pwufora 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

  • @ОлегШабанов-щ4ь
    @ОлегШабанов-щ4ь 2 ปีที่แล้ว +1

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

  • @НекийНекиев-я6ь
    @НекийНекиев-я6ь 8 หลายเดือนก่อน +1

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

    • @geronimolinus2617
      @geronimolinus2617 4 วันที่ผ่านมา

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

  • @zakirovio
    @zakirovio ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +1

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

    • @zakirovio
      @zakirovio ปีที่แล้ว

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

  • @igorzalutskyi5367
    @igorzalutskyi5367 3 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +5

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

  • @ResellerRus
    @ResellerRus 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

    • @ResellerRus
      @ResellerRus 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว +1

    спасибо!👏

  • @adammagomedov9822
    @adammagomedov9822 ปีที่แล้ว

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

  • @vladik_pwnz
    @vladik_pwnz 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

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

    • @smgbdr4338
      @smgbdr4338 ปีที่แล้ว

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

  • @davgf438
    @davgf438 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

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

    • @davgf438
      @davgf438 2 ปีที่แล้ว

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

  • @inuhu5547
    @inuhu5547 9 หลายเดือนก่อน +1

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

  • @maxliar6069
    @maxliar6069 11 หลายเดือนก่อน +2

    норм

    • @maxliar6069
      @maxliar6069 11 หลายเดือนก่อน +1

      +

    • @maxliar6069
      @maxliar6069 11 หลายเดือนก่อน +1

      согл

  • @saladinmuradalli3023
    @saladinmuradalli3023 3 หลายเดือนก่อน +1

    С __del__ если честно не все понятно,потому что если pt присвоить другое значение то предидущий и так удалится

  • @ivanbonadykov9624
    @ivanbonadykov9624 3 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +3

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

  • @girrra1233
    @girrra1233 3 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

      нет, не делал

  • @HubaBuba2007
    @HubaBuba2007 8 หลายเดือนก่อน +1

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

    • @selfedu_rus
      @selfedu_rus  8 หลายเดือนก่อน

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

  • @искандерфайзуллоев-ф4я
    @искандерфайзуллоев-ф4я ปีที่แล้ว +1

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

    • @SayXaNow
      @SayXaNow 11 หลายเดือนก่อน

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

    • @искандерфайзуллоев-ф4я
      @искандерфайзуллоев-ф4я 11 หลายเดือนก่อน

      @@SayXaNow спасибт

  • @Nick-zu9bi
    @Nick-zu9bi 3 ปีที่แล้ว +1

    Спасибо

  • @mayaklichova4435
    @mayaklichova4435 6 หลายเดือนก่อน +2

    😮😮😮😮

  • @nikprilutskiy7064
    @nikprilutskiy7064 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

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

  • @andreychernykh256
    @andreychernykh256 3 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +1

      какой?

    • @andreychernykh256
      @andreychernykh256 3 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +2

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

  • @user-wn8re9jv2b
    @user-wn8re9jv2b 2 ปีที่แล้ว +1

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

  • @OldHaggler
    @OldHaggler 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

      ответ в этом уроке th-cam.com/video/P4CNNo8jWj4/w-d-xo.html

    • @OldHaggler
      @OldHaggler 2 ปีที่แล้ว +2

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

  • @ОлегСмирнов-ю3к
    @ОлегСмирнов-ю3к 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

    • @ОлегСмирнов-ю3к
      @ОлегСмирнов-ю3к 2 ปีที่แล้ว

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

  • @luckytima2315
    @luckytima2315 3 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

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

    • @mantrida
      @mantrida 3 ปีที่แล้ว +1

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

    • @shyma_grasious
      @shyma_grasious 3 ปีที่แล้ว

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

  • @eklatov
    @eklatov 2 ปีที่แล้ว

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

    • @kif_chik5911
      @kif_chik5911 ปีที่แล้ว

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

  • @vlad.kozlov
    @vlad.kozlov 2 ปีที่แล้ว

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

  • @андрейхоменко-и5я
    @андрейхоменко-и5я 3 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +1

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

    • @mantrida
      @mantrida 3 ปีที่แล้ว +7

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +2

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

    • @kurt-miller
      @kurt-miller 3 ปีที่แล้ว +7

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

    • @gienek_mscislawski
      @gienek_mscislawski 3 ปีที่แล้ว +4

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

  • @ibrahimoglu
    @ibrahimoglu 3 ปีที่แล้ว +1

    👍

  • @RockstarAlexander
    @RockstarAlexander 3 ปีที่แล้ว +1

    👍👍👍👍

  • @Itbobojonov-ml1qz
    @Itbobojonov-ml1qz 8 หลายเดือนก่อน +1

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

    • @selfedu_rus
      @selfedu_rus  8 หลายเดือนก่อน

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

  • @SASka-ct7zj
    @SASka-ct7zj 3 ปีที่แล้ว

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

  • @BLITZBURY
    @BLITZBURY 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

  • @dadyx85
    @dadyx85 2 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

    • @dadyx85
      @dadyx85 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

    • @dadyx85
      @dadyx85 2 ปีที่แล้ว

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

  • @ЗакаСати
    @ЗакаСати 2 ปีที่แล้ว +1

    я люблю тебя

  • @Voron88888888
    @Voron88888888 2 ปีที่แล้ว +2

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +2

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

  • @ИльичьЛенин-й5ш
    @ИльичьЛенин-й5ш 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

  • @evgenmonkay
    @evgenmonkay ปีที่แล้ว

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

  • @Boston-ld7gk
    @Boston-ld7gk 9 หลายเดือนก่อน +1

    не совсем понятно зачем нужен этот метод

  • @АркадийМамонтов-д4г
    @АркадийМамонтов-д4г 9 หลายเดือนก่อน +2

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

  • @matmansky9348
    @matmansky9348 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

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

    • @matmansky9348
      @matmansky9348 ปีที่แล้ว

      @@selfedu_rus спасибо