ООП 16 Магические методы __len__ и __abs__. (Dunder methods)

  Рет қаралды 5,347

egoroff_channel

egoroff_channel

4 жыл бұрын

🔥🔥🔥 Курс на степике по ООП 🔥🔥🔥
stepik.org/z/114354
Степик с меня берет комиссию поэтому
1) Лучший способ приобрести курс - личный банковский перевод в РФ или покупку тарифа на boosty. Я добавлю вас вручную на курс по вашему ид.
t.me/artem_egoroff
2) оплачивать напрямую на степике по реферальной ссылке
stepik.org/z/114354
так с меня возьмут меньше комиссии
🚀🚀🚀 Доступ к закрытым видео на один месяц вы можете получить, став спонсором канала
/ @egoroffchannel
boosty.to/egoroff_channel
/ artem_egorov
👉👉👉Телеграмм канал моего проекта
t.me/python_egoroff
👉👉👉Группа в вк
python.study
egoroffartem.pythonanywhere.co...
Методы экземпляра. Аргумент self
• ООП 5 Методы экземпляр...
Декоратор Property
• ООП Python 11 Декорато...
Декораторы в Python
• Декораторы в Python Ч...
• ООП 6 Инициализация об...
Инициализация объекта. Метод init
• ООП 9 Публичные, прива...
Публичные, приватные, защищенные атрибуты и методы
Магические методы в Python очень важны. Метод _abs_ вызывается, когда объект поступает на вход функции abs
Магический метод _len_ вызывается, когда объект поступает на вход функции len
Object-Oriented Programming (OOP) in Python 3
egoroffartem.pythonanywhere.co...
stepik.org/course/63085/promo
Курс на степике
Все видео этого курса можете найти на сайте
egoroffartem.pythonanywhere.co...

Пікірлер: 37
@egoroffchannel
@egoroffchannel 2 ай бұрын
🔥 Записывайся на курс по ООП: stepik.org/a/114354 📙 Там тебя ждет: ✔ более 180 практических заданий по ООП ✔ более 300 тестовых заданий на проверку материала ✔ более 6 часов видеоматериала ✔ текстовые материалы по урокам, примеры кода ✔ Доступ к закрытому чату с дружественной обстановкой ✔ Сертификат в случае успешного прохождения курса 🎁 По промокоду EGOROFF можно получить 10% скидки на приобретение данного курса
@Andrew__.
@Andrew__. 4 жыл бұрын
Лучшие уроки!!!!
@aleksandrfareast
@aleksandrfareast 4 жыл бұрын
Всё отлично, как всегда.
@user-rw2ig6nb5l
@user-rw2ig6nb5l 3 жыл бұрын
Спасибо, Артем.
@kirillusenko
@kirillusenko 4 жыл бұрын
Спасибо огромное за тёмный фон!
@slavaseredenko4846
@slavaseredenko4846 2 жыл бұрын
Очень годный контент
@sainco3036
@sainco3036 4 жыл бұрын
Спасибо.
@Dm-if3vl
@Dm-if3vl 3 жыл бұрын
Спасибо
@ERROR-yl3un
@ERROR-yl3un 4 жыл бұрын
Моё самое любимое в Python это ООП
@Aquila-jq8sm
@Aquila-jq8sm 4 жыл бұрын
Спасибо за тёмную тему. Будут ли видео про работу с вебом? И может кто-нибудь посоветовать каналы для изучения.
@michael9312
@michael9312 2 жыл бұрын
__len__ больше про подсчет элементов, поэтому должно быть натуральным числом.
@alexadams1484
@alexadams1484 4 жыл бұрын
лайк
@Zeld1y
@Zeld1y 4 жыл бұрын
Кстати будешь ли делать видео по django
@egoroffchannel
@egoroffchannel 4 жыл бұрын
После ооп
@user-uy8zs4sl5w
@user-uy8zs4sl5w 3 жыл бұрын
@@egoroffchannel Отличная новость!
@Exmidzza
@Exmidzza 3 жыл бұрын
@@egoroffchannel и где же django))))
@dima_odya
@dima_odya 3 жыл бұрын
@@egoroffchannel ждём!))
@ERROR-yl3un
@ERROR-yl3un 4 жыл бұрын
У меня после этого видео реклама про Python вышла :D
@bulik1384
@bulik1384 3 жыл бұрын
не понятно для чего это вообще нужно, можно же создать метод с именем len и метод с именем abs, и дать им функционал len и abs, вызываться только будут они как методы а не как функции. поправьте если не так, но пока вообще не вижу практического применения этим "магическим" методам
@zh-zaharov5558
@zh-zaharov5558 4 жыл бұрын
Спасибо вам за видео и уроки. А вы можете продемонстрировать нам более сложные механизмы на 'python'? Хочется увидеть функционал
@ice-lc6mf
@ice-lc6mf 2 жыл бұрын
Доброго времени суток.Артем подскажи что за ерунду у меня выдает в Pycharm с методом __len__ ? class A: def __init__(self,a1): print("проверка инициализации") self.a1=a1 def __len__(self): print("проверка __len__") return 50 a=A(34) print(len(a)) ----------------------- в итоге выдает: проверка инициализации проверка __len__ 50 проверка __len__ проверка __len__ проверка __len__ проверка __len__ проверка __len__ проверка __len__ ____________________Как так ? Почему принт срабатывает столько раз? А если обратиться в консоли ,т.е. вбить a=A(34) ,то после инициализации выдаст два принта,а если вбить другой экземпляр b=A(2) то 2 принта ! Что за ерунда творится не понимаю.На телефоне пробую - все нормально.Please help! :)
@alexanderselesnev3739
@alexanderselesnev3739 4 жыл бұрын
Поначалу с магическим методом __len__ было понятно. Но пример с class Otrezok: сбил с понимания. Во-первых, переменные класса self.x1 и self.x2 - целочисленные значения, а метод работает со строками. Во-вторых, по определению, метод возвращает длину объекта (количество элементов в объекте). Так сколько элементов содержит объект t ?
@egoroffchannel
@egoroffchannel 4 жыл бұрын
на счет первого вопроса. Какой метод работает со строками? о чем речь? на счет второго вопроса. Я так понимаю идет речь об определении понятия длина? Если да, то в нашем случае мы находим длину отрезка, а не количество элементов
@alexanderselesnev3739
@alexanderselesnev3739 4 жыл бұрын
Время по видео 1:24 - у строк есть метод __len__ , а у чисел нет. Спасибо за ответ. Если я что-то не понимаю, будем разбираться.
@chem826
@chem826 4 жыл бұрын
Да, я тоже не понял этого момента.
@chem826
@chem826 4 жыл бұрын
Эта строчка, разве не будет лишней? Можно же ведь без нее тоже обойтись def __len__(self): return abs(self)
@nto2503
@nto2503 4 жыл бұрын
@@alexanderselesnev3739 в данном случае мы когда вызываем len у экземпляра класса, мы не длину числа (это не возможно) хотим вычислить, а вызвать магический метод __len__, в котором нам возвращается математическое выражение разности между точками
@nikitaivanov7077
@nikitaivanov7077 3 жыл бұрын
Почему если в метод __abs__ установить print, то при объявлении экземпляра класса принт срабатывает аж 4 раза INPUT: class Distance: def __init__(self, x1, x2): self.x1 = x1 self.x2 = x2 def __len__(self): return abs(self) def __abs__(self): print('Модуль') return abs(self.x1 - self.x2) a = Distance(9,5) OUTPUT: Модуль Модуль Модуль Модуль
@34alexed
@34alexed 4 жыл бұрын
тема с методом __abs__ не дораскрыта. Можно было сразу написать def __len__(self): return abs(self.x2 - self.x1) и в таком случае def __abs__(self): return abs(self.x2 - self.x1) лишнее написание кода. Вопрос следующий если, для того чтобы найти модуль числа мы используем abs() тогда для чего отдельный метод __abs__, он ничего не делает.
@egoroffchannel
@egoroffchannel 4 жыл бұрын
когда ты пишешь abs(self.x2 - self.x1), то метод __abs__ будет вызываться у числа а здесь я показал что один магический метод может вызывать другой
@user-li5ls7gu5z
@user-li5ls7gu5z 4 жыл бұрын
а где же 14-й ролик?
@aleksandrfareast
@aleksandrfareast 4 жыл бұрын
По ходу доступен только спонсорам)
@user-li5ls7gu5z
@user-li5ls7gu5z 4 жыл бұрын
@@aleksandrfareast нет, его просто нет. для спонсоров ролики тоже показываются, но посмотреть их нельзя
@Exmidzza
@Exmidzza 3 жыл бұрын
@@user-li5ls7gu5z теперь это тоже спонсорский ролик))
@ice-lc6mf
@ice-lc6mf 2 жыл бұрын
class A: def __len__(self): print("проверка __len__") a = A() выдает такую штуку: проверка __len__ проверка __len__ проверка __len__ проверка __len__ проверка __len__ проверка __len__ кто подскажет почему принт печатает столько раз в консоли в Pycharm? И вообще почему __len__ выполняется? Я же не вызвал его еще!!!
@ice-lc6mf
@ice-lc6mf 2 жыл бұрын
похоже что в методе __len__ не нужно прописывать принт для корректного отображения ,т.к. там идет какая-то непонятная итерация.И реализацию не всю можно сделать ,например вернуть строку не получится - ошибки появляются.
@doradamen8466
@doradamen8466 2 жыл бұрын
Честно, не вижу пока практического применения этих методов. Метод ради метода.
Дарю Самокат Скейтеру !
00:42
Vlad Samokatchik
Рет қаралды 8 МЛН
How Many Balloons Does It Take To Fly?
00:18
MrBeast
Рет қаралды 181 МЛН
WHAT’S THAT?
00:27
Natan por Aí
Рет қаралды 13 МЛН
БАБУШКИН КОМПОТ В СОЛО
00:23
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 15 МЛН
Чего ожидать от HTTP/3 + Go
51:07
Нина Пакшина
Рет қаралды 4,9 М.
11 Tips And Tricks To Write Better Python Code
11:00
Patrick Loeber
Рет қаралды 606 М.
Дарю Самокат Скейтеру !
00:42
Vlad Samokatchik
Рет қаралды 8 МЛН