#13. Магические методы __str__, __repr__, __len__, __abs__ | ООП Python

  Рет қаралды 45,229

selfedu

selfedu

Күн бұрын

Пікірлер: 67
@mikelir1889
@mikelir1889 2 жыл бұрын
в видео присутствует ОГОВОРКА: def f(*args): pass тип объекта args - tuple, то есть кортеж, но никак НЕ СПИСОК. курс отличный, спасибо большое
@selfedu_rus
@selfedu_rus 2 жыл бұрын
да, верно, есть такое )
@_garik__
@_garik__ 2 жыл бұрын
Мир питона стал чуточку понятнее)) Спасибо)!
@andredru4278
@andredru4278 7 ай бұрын
Спасибо. Все просто.
@abrorizzatullaev836
@abrorizzatullaev836 Жыл бұрын
so undestandable, amazing)
@AdmiralUshakovvv
@AdmiralUshakovvv 2 жыл бұрын
слушай ну надо отдать тебе должное, егоровчанелл хуже это обьяснил за первые два маджик метода))) ты лучший дядя)))
@ealbitg1043
@ealbitg1043 2 жыл бұрын
Неужели кто-то нормально объяснил магические методы. Спасибо огромное)
@dominica665
@dominica665 2 жыл бұрын
Серёга красава
@teacherit5840
@teacherit5840 2 жыл бұрын
Круто, спасибо!
@user-qh8xd2bc7q
@user-qh8xd2bc7q 2 жыл бұрын
Хотелось бы видеть плейлист по пандасу
@VGCor
@VGCor Жыл бұрын
Почему в методе __str__ используется f-строка вместо простого return self.name? Получается f-строка преобразует полученное значение в тип str без вызова метода __str__?
@selfedu_rus
@selfedu_rus Жыл бұрын
метод __str__ возвращает строку, которая получается при применении функции str() к объекту класса
@lmishin
@lmishin 2 жыл бұрын
Сергей вы просто шикарен, лучший педагог, из всех кого я встречал. Спасибо огромное!
@ЮрийТакаев-ч5ы
@ЮрийТакаев-ч5ы 2 жыл бұрын
underscore :-)
@jaksonmillka
@jaksonmillka 10 күн бұрын
Урок #13 = Пройден У меня есть понимание что это нужно знать, но честно говоря, когда слишком много магических методов, и тем более, если они практически не будут применяться, начинаю зевать, как будто на скучной лекции. Надеюсь хоть какой-то из них пригодится )
@ИгорьПравдин-п3у
@ИгорьПравдин-п3у Жыл бұрын
Наконецто тема, от которой не взрывается мозг)
@Bunkerniy_Gadenish
@Bunkerniy_Gadenish Жыл бұрын
тоже нравится кит кат?
@Qstgggg
@Qstgggg Жыл бұрын
Со временем всё будет понятно.Решайте практические задачи и изучайте пайтон)!
@span4ev
@span4ev 2 жыл бұрын
Раньше боялся этих методов, поэтому даже не пытался понять что это. Ничего не поменялось. Это всё конечно интересно, но без понимания где и как это можно применить на практике, оно остаётся непонятным, потому что кажется ненужным. По сути всё это сводится к тому, что обращаться сразу к имени экземпляра класса, вместо того чтобы дописать имя метода, и получить тот же результат. Интересно, но пока точно не пригодится, потому что кажется избыточным. Вместо того чтобы прописывать __len__, return и всё до кучи, можно просто сделать так print(len(p.coords)) - будет длина того же самого списка. Результат точно такой же. К чему лишние строки кода, лишний метод? Про модули я ничего не понял, потому что я тупой и понятия не имею, что такое модули, но Вместо __str__ можно сразу обращаться к нужному атрибуту. Здесь я ещё могу как-то дофантазировать, что видимо вся суть в том, что мы можем не знать имя нужного атрибута, но прописав __str__ мы получим какую-то информацию, например, чтобы другой человек сразу получил какое-то представление о чём либо. Но всё равно это сложно представить, когда есть другие варианты. Например print() в самом методе. Видимо всё дело в универсальности, чтобы не зная имён атрибутов и методов в любом случае что-то выводить при обращении к экземпляру класса Я учу пайтон и понимаю - не зря я столько времени не лез в эти перечисленные методы.
@AndriiHaidai
@AndriiHaidai 2 жыл бұрын
Material is very good! It's the second video, where you cal it `underscoPe`. It has nothing to do with scope. It is `underscoRe`.
@selfedu_rus
@selfedu_rus 2 жыл бұрын
да, спасибо, что то заклинило ))
@Хакохо
@Хакохо 8 ай бұрын
о май Сааааааааааt
@vovkodinak2416
@vovkodinak2416 5 ай бұрын
В конце ролика "#4 Метод __new__. Пример паттерна Singleton" было сказано об методе __call__. Я несколько раз пересмотрел текущий ролик #12, и я так и не понял, как можно применить метод __call__ к паттерну Singleton так, чтобы при создании очередного объекта типа Singleton его свойства оставались прежними.
@sstartsev
@sstartsev 2 жыл бұрын
Отлично рассказано! Спасибо!
@МихаилХолостов-р1п
@МихаилХолостов-р1п 2 жыл бұрын
Класс кАт
@astivard
@astivard 2 жыл бұрын
Это фишка автора ))
@nicholasspezza9449
@nicholasspezza9449 2 жыл бұрын
@@astivard это не фишка, а пробел в знаниях, который режет слух образованным личностям. Странно почему он не "сат" (через эс) говорит)) Кстати, name, произносит верно)
@cryptokrupt
@cryptokrupt Жыл бұрын
@@nicholasspezza9449 В английском a произносится открыто, максимально похоже на русскую а. Почему все должно произносить слова только на "американский " манер. Это не резка слуха образованных личностей. Это обычное ханжество.
@Dayplaylist
@Dayplaylist 2 жыл бұрын
Хорошее занятие ну когда уже я дойду до наследования😁
@WitcherCoin
@WitcherCoin Жыл бұрын
А чего не сад?)
@uniqqquniqqq2053
@uniqqquniqqq2053 2 жыл бұрын
Можете пожалуйста объяснить про функцию str. Здесь ее применяют к классу str(Cat) и она показывает имя класса и ячейку в памяти. Но также если сделать str(123) то она уже превратит в строку число. Это одна и та же функция? Почему она делает разные вещи?
@igorratnik2357
@igorratnik2357 Жыл бұрын
Как всегда Большущее спасибо Сергей!
@dmitriivanov7010
@dmitriivanov7010 2 жыл бұрын
Спасибо, вы гуру)
@leonardodebrycho5795
@leonardodebrycho5795 2 ай бұрын
Столько уроков уже прошло хоть бы позапоминать все эти методы).Спасибо за ваш труд отличный урок!
@андрейхоменко-и5я
@андрейхоменко-и5я 2 жыл бұрын
Вроде менее сложно чем предыдущий урок... Теперь бы не забыть это, что бы в нужной ситуации применить..
@x-user-agent
@x-user-agent 2 жыл бұрын
что бы не забывалось (ну или на по-дольше сохранилось в памяти 😁) нужна практика - пару-тройку раз написать всё это ручками🤪
@ЯрославБеляев-т5к
@ЯрославБеляев-т5к 2 жыл бұрын
Я бы в качестве модуля взял длину радиус вектора, она часто полезнее бывает)😄
@bot_N666
@bot_N666 Жыл бұрын
Этот ролик был очень понятен, видимо простая тема, а некоторые в голову не хотят заходить.
@Jevelin4kNone
@Jevelin4kNone 10 ай бұрын
я сижу как обезяна питаюсь понять
@Heyrock
@Heyrock Жыл бұрын
прошу прощения: underscoRe
@АлександрКоротеев-я2ы
@АлександрКоротеев-я2ы 2 жыл бұрын
Сергей здравствуйте.Вы не планируете сделать уроки по блокчейну и смартконтрактам на python? Было бы замечательно,даже если он будет платным..
@selfedu_rus
@selfedu_rus 2 жыл бұрын
пока нет
@КостяГорохов-б6с
@КостяГорохов-б6с 2 жыл бұрын
Еще можно так писать repr(cat) - выведет строку
@ymnop9652
@ymnop9652 2 жыл бұрын
А почему print(len(p)) Не работает по умолчанию для экземпляров класса? class Point: def __init__(self, *args): self.coords = args def show_len(self): return len(self.coords) p = Point(1, 2) print(p.show_len()) Вот например так лен работать будет, а почему print(len(p)) так нет? А если скажем если нам нужно считать len 10ти свойств класса, нам нужно будет дикое дерево if else в магическом методе __len__ делать? if self.__coords_1: return self.__coords_1 ... elif self.__coords_99: return self.__coords_99
@rukigaki
@rukigaki 11 ай бұрын
Говоришь, что считаешь len 10-ти свойств, но при этом просто выводишь координаты(__coord_n) экземпляра класса. Причем абсолютно несуразным способом
@SuleimanVatrushkin
@SuleimanVatrushkin Жыл бұрын
большинство тем по пайтону нормально усваиваю, но с этими методами пока трудно очень. Но автору в любом случае спасибо
@GcJaster21322
@GcJaster21322 2 жыл бұрын
Я правильно понимаю, что к примеру метод str или len, которые мы можем применить к экземпляру класса и к объекту другого типа относятся к теме полиморфизма и я являются полиморфными? интерфейс по факту один но работает по разному?!
@selfedu_rus
@selfedu_rus 2 жыл бұрын
здесь функциями str и len вызываются магические методы __str__ и __len__ соответствующих объектов (самых разных) и это можно, на мой взгляд, считать полиморфизмом
@orestlevit1663
@orestlevit1663 Жыл бұрын
Та не "Кат", а "Кэт".
@НурланБайбатыров-ю5м
@НурланБайбатыров-ю5м Жыл бұрын
undrescoRe = __, underscoPe = недооценивать,
@selfedu_rus
@selfedu_rus Жыл бұрын
есть такое ))
@МаксимАндреев-я1г
@МаксимАндреев-я1г 2 жыл бұрын
Интересное интерпретирование __str__ для пользователей, __rerp__ для разработчиков, то есть человек пишущий код это пользователь)
@selfedu_rus
@selfedu_rus 2 жыл бұрын
в момент разработки и отладки - разработчик, а когда его плодами пользуются другие (или он сам), то пользователь
@ibrahimoglu
@ibrahimoglu 2 жыл бұрын
👍
@alenwar5123
@alenwar5123 Жыл бұрын
Потрясающий урок
@shushanikpirumyan6299
@shushanikpirumyan6299 2 жыл бұрын
кто мне может обяснить self.__coords=ars. это прижатный атрибыт, а что значит =args?
@gienek_mscislawski
@gienek_mscislawski 2 жыл бұрын
Правильно ли я понял, что repr и str без переопределения работают одинаково?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
да
@gienek_mscislawski
@gienek_mscislawski 2 жыл бұрын
@@selfedu_rus спасибо!
@bigsmilefriend
@bigsmilefriend 2 жыл бұрын
У меня такое ощущение, что это не магические методы, а обычные функции. Вот я не могу понять, зачем нужен этот магический метод, если надо описывать его функционал? И что в нем магического, если он не работает без написания в классе. Например, если бы я вместо функции __len__ написал бы такую функцию: def length(self): return len(self.__coords) print(length(p)) В том, что есть специальная функция и ту что мы описали разницы нет, функционал одниаковый. Или я не прав? спасибо)
@selfedu_rus
@selfedu_rus 2 жыл бұрын
а как метод __call__, например, замените или метод __iter__ и так далее, не все так легко подменяются, да и функцию len другой заменять тоже не очень, т.к. это некий стандарт в Python
@VGCor
@VGCor Жыл бұрын
То есть для магического метода __ str__ есть соответствующая функция str, для магического метода __len__ имеется функция len, для __abs__ существует abs. НО! Для магического метода __repr__ не существует соответствующей функции? Как-то несправедливо получается ;)
@selfedu_rus
@selfedu_rus Жыл бұрын
repr используется самим интерпретатором Python и вызывает его в отладочных (служебных) целях
@Lord_Nodus
@Lord_Nodus 2 жыл бұрын
Я обычно использую __str__ и __repr__, чтобы менять отображение информации об объектах при дебаге. Ещё у меня бывало такое, что объекты отображались красным и не выводилась информация, это происходит из-за ошибки в методах, и в консоли такая ошибка не отображается
@НикН-о7о
@НикН-о7о 2 жыл бұрын
В чем прикол __len__ и __abs__. Всё это с такой же лёгкостью можно сделать обычным методом
@selfedu_rus
@selfedu_rus 2 жыл бұрын
удобство и унификация кода на более общем уровне
@user-serg_tlt
@user-serg_tlt 2 жыл бұрын
Спасибо. Всё ясно и понятно.
Как мы играем в игры 😂
00:20
МЯТНАЯ ФАНТА
Рет қаралды 3,2 МЛН
Новый уровень твоей сосиски
00:33
Кушать Хочу
Рет қаралды 4,9 МЛН
Магические методы в python. Dunder методы
1:00:45
Магические Методы Python
25:51
Аве Кодер
Рет қаралды 6 М.
В чем разница staticmethod и classmethod python
6:48
Django School | Омельченко Михаил
Рет қаралды 13 М.
PYTHON МАГИЧЕСКИЕ МЕТОДЫ: __STR__ + __REPR__
8:33
__new__ или __init__ в Python? Знаете ли вы это..
12:37
ОБЪЕКТЫ И КЛАССЫ В ПИТОНЕ
17:47
Андрей Иванов | Python
Рет қаралды 5 М.
Как мы играем в игры 😂
00:20
МЯТНАЯ ФАНТА
Рет қаралды 3,2 МЛН