Магические методы в python. Dunder методы

  Рет қаралды 16,969

Python Russian

Python Russian

Жыл бұрын

Поговорим об основных магических методах, которые могут добавить нашим классам самую разную функциональность и существенно поменять их поведение. Заодно затронем как именно они реализованы по-умолчанию, то есть как они работают, если их не реализовать.
Естественно мы не рассмотрим все имеющиеся методы, их много, но затронем самые основные.
Читать:
docs.python.org/3/reference/d...
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm

Пікірлер: 89
@n_sta5850
@n_sta5850 3 ай бұрын
Автору Спасибо! Это лучшая подача материала, которую я встречал на KZfaq, даже в сравнении с англоязычными ресурсами!
@anton-18
@anton-18 Ай бұрын
Ты наверное неправильно гуглил:)
@ArntorRUS
@ArntorRUS 20 күн бұрын
Спасибо, очень подробный разбор!
@F_C_T_L
@F_C_T_L Жыл бұрын
Спасибо за ваши уроки! Начиная учить Python вы мне очень помогли плавно войти в эту сложную тему, и вот уже прошло 6 месяцев с момента начала. Я окончательно определился с направлением, это Backend разработка, и уже довольно хорошо знаю Django. Вспомнив себя тогда, мне это всё казалось таким сложным и непонятным, а теперь всё выглядит намного легче. Хорошо что вы рассказываете всё простым языком и всегда ссылаетесь на надёжных авторов.
@PythonRussian
@PythonRussian Жыл бұрын
спасибо вам за отзыв и успехов во всем!
@orion_1223
@orion_1223 Жыл бұрын
Вы сказали, что довольно неплохо знаете django. Подскажите, пжст, (я освоил базу питона + базовое ООП, поразбирался с тем, что такое инет, как это работает - запросы, протоколы, респонсы и тд; подосвоил sql, , и теперь перехожу к django, djangorest framework) посмотрел много разных курсов, подчитал документацию, начал немного идти в книги, но не могу найти нигде адекватной структуриванного объяснения как что работает(одни сплошные наследования от наследований и наследованиями поганяют), и самое главное нигде нет практики - в большинстве случаев “смотри, что пишу я и повторяй за мной». Подскажите где найти нормальный материал по изучению джанго с нормальной практикой, для приобретения навыков. Спасибо за ответ
@F_C_T_L
@F_C_T_L Жыл бұрын
​@@orion_1223 Вы правильно сделали, что начали всё учить постепенно, так вам будет намного легче, а по поводу практики мне кажется вы не найдёте хороших курсов с практикой. Лично мне ничто так не прибавляло в знаниях, как собственные проекты, и это нормально если вы изначально не знаете как их реализовывать, это даже хорошо, значит данный проект сможет вас чему-то научить. Из всех собственный проектов что я начинал, я не знал как реализовать ни один, всё понимал по ходу написания. Мой первый проект - сайт рецептов, где пользователи могут искать рецепты по категориям либо используя поиск, а так же могут сохраняться рецепты в свой профиль, что бы затем их быстро находить. Можете попробовать реализовать похожий проект. После того как поймёте что такие проекты для вас уже не слишком сложны, проходите курсы по узким темам например научитесь тестировать свой проект и т.д, благо на stepik'е или аналогичных платформах их полно, а там уже можно и работу искать ) По поводу архитектуры, Django из коробки создаёт архитектуру и показывает как, где, по каким директория всё должно находится это нужно либо запомнить либо много практиковаться пока самому интуитивно не станет понятно, а в том что в Django всё от всего наследуется нет ничего страшного, вам не нужно пытатся понять как всё работет на самом низком уровне, изучая каждый класс, конечно есть классы которые нужно знать, но их не слишком много, для этого и существует Django что бы все низкие процессы скрывать и предоставить вам только удобный инструмент разработки.
@orion_1223
@orion_1223 Жыл бұрын
@@F_C_T_L Спасибо, Вы подтвердили мои предположения: приблизительно так и думал, но теперь окончательно убедился, что путь только через собственный проект. Буду пробовать дальше. Вам также успехов в обучении и работе
@F_C_T_L
@F_C_T_L Жыл бұрын
@@orion_1223 Спасибо!
@Developer_python_
@Developer_python_ Жыл бұрын
Все знаю но сильно кайфую от структуры подачи!
@andrewpuchinin8547
@andrewpuchinin8547 Жыл бұрын
Почему так мало лайков??? А ну-ка поднажмите, народ)) Видео отличные, спасибо за канал! Особенно нравится опыт про собеседования и ошибки новичков. Это сразу отсекает много ошибок и экономит время, и вообще это то, о чем не говорят во многих и многих обучалках.
@user-ez9uf9zm3v
@user-ez9uf9zm3v Жыл бұрын
Все видео крутые, подача хорошая, все понятно! спасибо!)
@drevosv
@drevosv Жыл бұрын
Отличное видео! Всё показано просто и доступно. Спасибо огромное!
@elnurmaharramov9319
@elnurmaharramov9319 Жыл бұрын
Спасибо Вам за труд ! Дай Бог здоровья
@abra-kadabra5000
@abra-kadabra5000 Жыл бұрын
Большое спасибо! Очень доступно и полезно!
@Vladimir-bz9tg
@Vladimir-bz9tg Жыл бұрын
Спасибо большое за Ваше видео, очень хорошо дополняет чтение книг. Спасибо Вам!
@user-db2ug8tr5o
@user-db2ug8tr5o Жыл бұрын
Спасибо большое за предоставленный материал для изучения. Хорошая дикция автора и элегантная подача материала приложена.
@Akim_Edmundovich
@Akim_Edmundovich 2 ай бұрын
Спасибо тебе большое! 😊
@khirsan270
@khirsan270 2 ай бұрын
Так и запишем. Программисты и люди это разные вещи, несовместимые друг с другом. 10:07
@user-sm1th3nu7s
@user-sm1th3nu7s 4 ай бұрын
Спасибо! Очень наглядно. Однако, по-моему, есть ошибка при описаниях методов (около 52 минуты +/-): при проверке верхней границы допустимого диапазона len() следовало бы уменьшить на 1. С вашим набором len= 3, однако, [3] уже "аут")))
@Laserball74
@Laserball74 Жыл бұрын
Отличный мастер класс!!!
@germanborisov1765
@germanborisov1765 Жыл бұрын
Объемное и полноценное видео про Dunder методы. Разобраны и (!)проиллюстрированы на практике(!) наиболее часто используемые магические методы. Большое спасибо! Если кто-то залез в комментарии, сомневаясь, стоит ли смотреть - настоятельно рекомендую к просмотру!!!
@Sosed2024
@Sosed2024 8 ай бұрын
Благодарю, супер!
@Daloshka
@Daloshka Жыл бұрын
Лучший урок) Пасибо
@Miron_Nicolaevich
@Miron_Nicolaevich Жыл бұрын
годный контент! так же интересно узнать подробнее о документировании кода)
@barma1309
@barma1309 Жыл бұрын
спасибо!
@lukasmog777
@lukasmog777 Жыл бұрын
Все круто! И звук и шрифт! Спасибо за видео!)
@x-user-agent
@x-user-agent Жыл бұрын
такое ощущение что человек другой 😁 голос едва узнаётся) а звук - отличный
@PythonRussian
@PythonRussian Жыл бұрын
не, это точно я, просто микрофон другой, я даже сам свой голос не узнал при проверке))
@walibabajanov3751
@walibabajanov3751 Жыл бұрын
Спасибо
@stalker7999
@stalker7999 Жыл бұрын
Молодец очень классно и превью классное очень подходят персонаж из фалаута
@PythonRussian
@PythonRussian Жыл бұрын
спасибо, фоллаут запал в душу с самой первой части, вот и решил использовать.
@Chanel_for_CODE
@Chanel_for_CODE Ай бұрын
Отличная подача! В преподаватели бы))))
@PythonRussian
@PythonRussian Ай бұрын
не, для этого призвание нужно, а я для удовольствия делюсь по мере времени свободного. Хотя может на пенсии и запилю курсик)
@databox4279
@databox4279 8 ай бұрын
Как всегда великолепное объяснение. Никто другой по данной теме не сказал, что eval может создать проблемы. В pycharm можно добавить русский язык, чтобы он не подчеркивал русские слова в комментариях, но я думаю что Вы и без меня это знаете.
@user-buser_eto_ja
@user-buser_eto_ja 6 ай бұрын
Спасбо!
@Ssilki_V_Profile
@Ssilki_V_Profile Жыл бұрын
Методы арифметического соавнения тоже необходимо предварить проверками типов. Если типы не совпадают - либо возвращать False, либо кидать TypeError.
@vitas_shlun
@vitas_shlun Жыл бұрын
Видео полезное. спасибо, но я полчаса гуглил что такое "new*" при создании класса в пайтоне!!! Потом дошло что это pycharm добавляет))
@PythonRussian
@PythonRussian Жыл бұрын
это недавно появилось в пичарме, я что-то даже не подумал на этом заострить внимание, в следующем видео предупрежу зрителей, спасибо
@Ssilki_V_Profile
@Ssilki_V_Profile Жыл бұрын
Сравнение прописанных атрибутов обычно не достаточно. Желательно сравнить ВСЕХ атрибутов. То есть, надо сравнивать через __dict__
@rektifikator
@rektifikator Жыл бұрын
Полезное видео! Ещё можно было менеджер контекста добавить, или по нему отдельно ?
@PythonRussian
@PythonRussian Жыл бұрын
про менджер контекста есть отдельное видео у меня, там пишем его на декораторах и через магические методы
@Miron_Nicolaevich
@Miron_Nicolaevich Жыл бұрын
расскажи когда-нибудь про абстрактные методы и классы
@AnatoliyDekorstyle
@AnatoliyDekorstyle Жыл бұрын
Видео как всегда прямо как бальзам на ... новичку!!! Спасибо большое! Можно практический вопрос - насчет метода __getitem__ - правильно ли я понял, что он может полноценно заменить next и iter? к тому же позволяет многократно итерировать объект. Это ж экономия кода получается хорошая: реализуешь геттер для колекций и паралельно итер и некст!!! Или есть подводные камни?
@PythonRussian
@PythonRussian Жыл бұрын
иногда да, особенно если тебе изначально нужно чтобы коллекция работала по индексу, но иногда тебе наоборот нужна работа с итератором, а индексы не нужны, потому есть разные варианты
@gafiatulineduard9365
@gafiatulineduard9365 5 ай бұрын
Нужно сменить оформление , имена методов плохо читаются на текущем фоне.
@benben-fz2es
@benben-fz2es 4 ай бұрын
Сегодня час потерял на поиск, почему итератор вернул не с нуля. Оказывается, если итератором делать себя, и на первом цикле брекнуть цикл, то второй цикл начнет не с начала. То же самое было бы в многопоточке, но еще тяжелее вылавливаемое.
@PythonRussian
@PythonRussian 4 ай бұрын
ну да, итераторы - одноразовые, нельзя их постоянно использовать, надо пересоздавать.
@plintuz
@plintuz Жыл бұрын
Спасибо, отлично объясняете! Подскажите, что за плагин подсказывает над методами: new*
@PythonRussian
@PythonRussian Жыл бұрын
нет плагина, это новый пичарм про так себя ведет
@user-wt8ki2rx6c
@user-wt8ki2rx6c Жыл бұрын
Отличное видео , разобрался с темой. Подскажите тему в Pcharm и практический вопрос - Можно ли удалить экземпляр класса из самого класса ? ( если не удалять, то хотя бы присвоить экземпляру None или 0 ). Спасибо
@PythonRussian
@PythonRussian Жыл бұрын
навскидку - нет. Сам представь, у кого то есть ссылка на экземпляр, а ты как то из-за кулис подменишь ссылку? или подменишь содержимое в памяти? Единственное что вполне возможно - заменить состояние, то есть сделать в объекте все данные 0 или Нан. Но и то для этого ты должен в самом классе где то хранить ссылки на все экземпляры.
@denk2k
@denk2k Жыл бұрын
А тема в PyCharm вроде бы Dark Purple
@PythonRussian
@PythonRussian Жыл бұрын
@@denk2k да, давно мне полюбилась
@user-wt8ki2rx6c
@user-wt8ki2rx6c Жыл бұрын
@@PythonRussian Спасибо за ответ
@PythonRussian
@PythonRussian Жыл бұрын
@@user-wt8ki2rx6c но если ты такой способ найдешь -поделись. =)
@exfell320
@exfell320 Жыл бұрын
Можете ответить,пожалуйста, вот если например написать переменную и поставить после неё точку, то после неё вылезет в пайчарме очень большое количество дандр методов, например a.(__main__, __dir__,и тд), там их очень много, это относится к ооп?
@PythonRussian
@PythonRussian Жыл бұрын
ну да, в питоне все является объектом, пичарм пытается угадать атрибут нужный.
@databox4279
@databox4279 4 ай бұрын
Добрый вечер. Чат GPT подкинул код, чтобы не писать отдельный класс для возможности несколько раз итерироваться по одному и тому же объекту: def __iter__(self): self.current = 0 return self Или это плохая идея и реализация с отдельным классом в чем-то лучше? Заранее благодарю за ответ.
@user-fz9zg5gt4c
@user-fz9zg5gt4c Жыл бұрын
хорошо что у тебя теперь нормальный микрофон
@PythonRussian
@PythonRussian Жыл бұрын
я и сам рад)
@swaytornado8327
@swaytornado8327 Жыл бұрын
а скажи пожалуйста, что эта за такая пометка у тебя в Pycharm видна была возле класса и методов - new*
@PythonRussian
@PythonRussian Жыл бұрын
это пишет сам пичарм в новой версии, я уже отключил это, так как многих сбивало с толку
@swaytornado8327
@swaytornado8327 Жыл бұрын
не удается справится с домашним заданием, т.к. ты в пример заложил свою логику, и теперь не понятно как из списка доставать значения, если у экземпляров нет атрибута balance, на это выводится вот такое сообщение Банкнота номиналом в 50 рублей. А как же тогда внутри класса достать его value, если в методе __add__могут быть всего два параметра __add__(self, other). И чтобы достать значение из списка нужен ключ, можешь как-то продолжить реализацию этого класса и показать, как это можно сделать, спасибо. Материал отменный, помогает в освоении практических примеров, но пока тяжело самому писать.
@andreidelido6466
@andreidelido6466 2 ай бұрын
спасибо автору за хорошую подачу материала. Есть вопрос - в чем отличие вызова, к примеру, маг.метод __cal__ и обычного обозначения (не магического) метода? На выходе результат одинаковый...
@PythonRussian
@PythonRussian 2 ай бұрын
если в твоем классе есть метод __call__ то его объект можно вызвать как функцию, например cat=Cat(); cat() # тут будет вызван метод колл
@andreidelido6466
@andreidelido6466 2 ай бұрын
@@PythonRussian Благодарю за пояснение. У вас есть видео, где вы разбираете какие-то задачи по ООП, может на других платформах?
@PythonRussian
@PythonRussian 2 ай бұрын
@@andreidelido6466 нет, такого не снимал
@andreidelido6466
@andreidelido6466 2 ай бұрын
@@PythonRussian жаль, было бы здорово, еще раз скажу - очень хорошая подача материала
@xesax
@xesax 7 ай бұрын
5:00 так и знал что программисты не люди.
@maffioznik4500
@maffioznik4500 Жыл бұрын
Здравствуйте, подскажите, что за оформление в pycharm
@PythonRussian
@PythonRussian Жыл бұрын
если вы про тему, то это Deep Purple, включить можно через плагины в настройках
@user-hc6sg9vd5c
@user-hc6sg9vd5c Жыл бұрын
Здравствуйте а на фрилансе как с пайтаном много заказов
@PythonRussian
@PythonRussian Жыл бұрын
если вопрос ко мне то я не знаю, никогда не голодал)) Если серьезно, то теоретически должно быть много ибо он популярен, дата сатанизм +боты. Но это не точно.
@PythonRussian
@PythonRussian Жыл бұрын
@Серега Мичурин да, собирательный термин про ИИ, МЛ и прочие панды
@Daloshka
@Daloshka Жыл бұрын
А почему бы просто index=0 не перенести внутрь функции def __iter__(self): index = 0
@benben-fz2es
@benben-fz2es 4 ай бұрын
Могут бежать два итератора одновременно - в многопоточке.
@montecristo31
@montecristo31 Жыл бұрын
нельзя просто в eq добавить other: Banknote? Типо что other должен быть экземпляром Banknote.
@PythonRussian
@PythonRussian Жыл бұрын
можно, но аннотация -это лишь рекомендация, сунуть то могут что угодно
@user-de3op9hs4p
@user-de3op9hs4p 7 ай бұрын
@@PythonRussian Сунуть-то могут что угодно, но примет только банкноту. Разве не упадёт исключение, что ожидалась банкнота, а вы мне инт суёте, например?
@Daloshka
@Daloshka Жыл бұрын
Не досмотрел пару секунд и написал) Для оптимизации можно контейнер для __bool__ переписать: def __bool__(self): return self.container is not []
@smile_of_despair
@smile_of_despair Жыл бұрын
Пони?
@NazguloneofniNazguloneofni
@NazguloneofniNazguloneofni Жыл бұрын
Ахаххах repr для программистов, а str для людей аххахах. print("Программист не человек")
@Ssilki_V_Profile
@Ssilki_V_Profile Жыл бұрын
eval is evil
@user-eg5oj7sh2d
@user-eg5oj7sh2d Күн бұрын
Программисты не люди😢
@user-sh4zx5rs2l
@user-sh4zx5rs2l Жыл бұрын
Для сравнения достаточно реализовать >=,
@bmirmorsminecraft3106
@bmirmorsminecraft3106 3 ай бұрын
про итератор. ты же в __iter__ мог просто внрнуть iter(self.container) поскольку контейнер у тебя является списком, а в нем уже реализованы итерации, некст и итер. можно было не заморачиватся.
@PythonRussian
@PythonRussian 3 ай бұрын
так если не заморачиваться, то можно и не снимать ничего
Первые шаги в ООП: класс, объект, self
1:00:45
Python Russian
Рет қаралды 32 М.
Доступ к свойствам объекта. Property и slots
42:54
A little girl was shy at her first ballet lesson #shorts
00:35
Fabiosa Animated
Рет қаралды 9 МЛН
КАК ДУМАЕТЕ КТО ВЫЙГРАЕТ😂
00:29
МЯТНАЯ ФАНТА
Рет қаралды 9 МЛН
Beautiful gymnastics 😍☺️
00:15
Lexa_Merin
Рет қаралды 15 МЛН
Python 101: Learn the 5 Must-Know Concepts
20:00
Tech With Tim
Рет қаралды 1,1 МЛН
Замыкания (Closures) в Python
30:54
Python Russian
Рет қаралды 14 М.
Решаем тестовое задание на позицию junior python backend разработчик
21:18
𝐧𝐞𝐫𝐝𝐢𝐳𝐚𝐲-𝐜𝐨𝐝𝐞
Рет қаралды 15 М.
PYTHON MAGIC METHODS. __INIT__ и __NEW__
14:53
luchanos
Рет қаралды 6 М.
Паттерн Singleton (Одиночка) в Python
36:55
Python Russian
Рет қаралды 11 М.
Docker за 20 минут
21:42
suchkov tech
Рет қаралды 69 М.
10 признаков того, что вы новичок в Python
4:59
A little girl was shy at her first ballet lesson #shorts
00:35
Fabiosa Animated
Рет қаралды 9 МЛН