Атрибуты класса, classmethod и staticmethod

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

Python Russian

Python Russian

Жыл бұрын

Посмотрим в первом приближении на атрибуты класса, как с ними работать, для чего нужны декораторы classmethod и staticmethod.
1) LEGB - правило продолжает действовать для простых имен переменных и их поиска
2) для self атрибутов поиск идет сначала в объекте, потом в классе, затем у предков OCP(object-class-parent). То есть через селф можно достучаться как к обычным методам/атрибутам, так и к классовым, статичным
3) если через self пытаться поменять неизменяемый атрибут (строка) класса, то будет создана локальная копия, ее не увидят другие объекты класса
4) если менять через self изменямый атрибут класса (список), то он изменится для всех объектов класса
5) cls - это ссылка на класс (не объект!), питон передает его под капотом. cls = Class
6) classmethod используется для работы с атрибутами класса и с другими методами класса. Часто используется для конструирования готовых объектов
7) staticmethod не получает ссылок под капотом, это просто функция связанная контекстом с классом. Используется редко и часто завуалированно
Читать:
docs.python.org/3/tutorial/cl...
docs.python.org/3/library/fun...
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm

Пікірлер: 32
@PythonRussian
@PythonRussian Жыл бұрын
Друзья, мои извинения, на вчерашнее видео было много жалоб из-за звука, это перезалив его же с усилением. Всех с наступающим Новым Годом!
@user-buser_eto_ja
@user-buser_eto_ja 6 ай бұрын
До чего же легкая и внятная подача. Очень, очень ОГРОМНАЯ благодарность вам.
@user-tf5gu6qc2d
@user-tf5gu6qc2d 7 ай бұрын
Браво!!!! 2 дня понимал что это такое.... а тут оказывается всё просто!!!
@user-dn7vq7uv8p
@user-dn7vq7uv8p 3 ай бұрын
Боже мои спасибо тебе добрый человек. Месяц мучаюсь с этими методами, постоянно что непонятное выходит. Теперь понял.
@x-user-agent
@x-user-agent Жыл бұрын
спасибо и с наступающим 🎄
@user-tk7bq2jh4q
@user-tk7bq2jh4q Жыл бұрын
Как всегда отлично. Осталось немного - сложить все лекции в общий курс.
@kohakovich
@kohakovich Жыл бұрын
Отлично объясняешь !!!долго мучился с этой темой.
@aston585
@aston585 9 ай бұрын
Разложил по полочкам! Спасибо!
@evgeniywerty7669
@evgeniywerty7669 Жыл бұрын
Наконец нашел ответы на свои вопросы, спасибо!
@user-fy2wd3tk5n
@user-fy2wd3tk5n Жыл бұрын
Автор прирожденный педагог 👋. Очень часто при изучении новой темы остается каша из не вполне систематизированных знаний. Но не в этом видео.
@user-bp3sd5mp5p
@user-bp3sd5mp5p 9 ай бұрын
Самое лучшее видео с объяснениями на всем KZfaq про @classmethod и @staticmethod
@Onneaanable
@Onneaanable Жыл бұрын
Посмотрел, все хорошо. Но еще лучше, то, что в Glang нет такого классического ООП! 👍
@PythonRussian
@PythonRussian Жыл бұрын
это фигня, ты на Хаскел посмотри =)
@NoNoNo_Name
@NoNoNo_Name Жыл бұрын
Ещё бы микрофон подальше от клавиатуры с мышкой стоял, вообще огонь бы был) ну и масштаб мелкий, видно только в полноэкранном режиме. В обычном режиме или на телефоне очень мелко. Но по существу - крутое видео, спасибо!
@PythonRussian
@PythonRussian Жыл бұрын
а тут как масштаб и микрофон? kzfaq.info/get/bejne/nruqaNBiuKq9kYU.html
@user-vb9ov2vz7t
@user-vb9ov2vz7t Жыл бұрын
Отличное видео
@stevem4806
@stevem4806 10 ай бұрын
Спасибо!
@Mike24ru
@Mike24ru 5 ай бұрын
Cпасибо тебе за обучающие материалы. Когда я уже сдался, и понимаю, что уже ничего не понимаю, я иду сюда. На 14й минуте мне кажется ты немного перемудрил . Когда создал атрибут ЭК, то он просто добавился в его словарь ( локальную область переменных). tom.__dict__ => {name = 'Tom', age = 2, breed = 'Other'}, а было {name = 'Tom', age = 2}. А переменная breed = 'Russian Blue' как лежала в скоопе у класса, так и лежит. BlueCat.__dict__ Пока её не было у ЭК (tom), питон доставал её из объемлющей области. Причём тут hachable/mutable я не совсем понял. Если tom (ЭК) создать переменную names, то tom.names перестанет ссылаться на переменную names принадлежащую классу. Но если не создать... То tom.names.append('какое-то_имя') будет менять переменную в BlueCat.__dict__ И вот об эти грабли можно расшибить лоб. Когда надо помнить: tom.breed is angela.breed => True tom.breed = 'Other' tom.breed is angela.breed => False tom.names is angela.names => True tom.names = ["ксс", "Томми"] tom.names is angela.names => False Если я что-то неверно понял, прошу извинить. (__dict__ написано верно, с двумя "_" "_", почему-то ютуб показывет как одно)
@kuznetsov_cars
@kuznetsov_cars Жыл бұрын
Great! Im learning a course on Stepik. But I could only now understand for what these methods. Thanks
@orion_1223
@orion_1223 Жыл бұрын
Будет ли видео про абстрактные классы и property? И что там по дандерметодах и их наследовании? Вообще, круто рассказываешь)
@PythonRussian
@PythonRussian Жыл бұрын
да, следующее видео про дандеры, потом посмотрим, может и проперти
@golokwen7622
@golokwen7622 Жыл бұрын
Спасибо большое за видео! Разобрался теперь. А то другие ролики током ничего не объясняют, одна каша остаётся Еще вопрос. Могу ли я прислать один алгоритм который сокращает нахождение элемента вокруг элемента матрицы? Мог бы ли ты его объяснить? Спасибо
@PythonRussian
@PythonRussian Жыл бұрын
нет, по коду - это надо на форум отправлять и там общаться
@soldiertoy
@soldiertoy Жыл бұрын
Надеюсь вы услышите меня, на просторах русскоговорящего ютуба совсем нет информации про pytest, может вам стоит запустить серию роликов по этой теме? Я думаю будет очень актуально
@PythonRussian
@PythonRussian Жыл бұрын
не знал о таком упущении в ютубе, питест у меня в списке на продолжение видео (одно только снято), просто это список большой. В этом году думаю доберемся и до питеста.
@soldiertoy
@soldiertoy Жыл бұрын
​@@PythonRussian Его прям вообще нету на ютубе, либо короткие видео по 10 минут, где говорится как его скачать, но серьезного ничего нет) Ваш талант объяснять + актуальная тема должны дать хороший результат)
@user-yo3iw7mm2h
@user-yo3iw7mm2h 7 ай бұрын
Ни чего не понял. Почему нельзя записать так: @classmethod def increment_count(cls): cls.__init__(cls, "Tom", 2) cls.meaw(cls) ?
@user-buser_eto_ja
@user-buser_eto_ja 6 ай бұрын
Проблема в том, что cls.__init__(cls, 'Tom', 2) пытается повторно инициализировать класс, что может привести к неожиданным результатам. Обычно __init__ вызывается автоматически при создании нового объекта. Также, cls.meaw(cls) пытается вызвать метод meaw на классе, а не на объекте.
@goodmorning5965
@goodmorning5965 11 ай бұрын
как-то сложно заходят эти классы =( третий день топчусь на месте, чувствую себя тупым.
@PythonRussian
@PythonRussian 11 ай бұрын
это нормально, не торопись, ООП постепенно уложится в голове, просто продолжай подходить по-маленьку и с разных сторон
@goodmorning5965
@goodmorning5965 11 ай бұрын
@@PythonRussian спасибо, руки не опускаю, но возможно, действительно хочу все на лету, как было с предыдущими темами.. А не получается ) Подсел на твои видео , спасибо большое за информацию что записываешь , очень полезная инфа 👍🙂
@vandriichuk
@vandriichuk 17 күн бұрын
Много подчерпнул
Что за звери *args и **kwargs
38:02
Python Russian
Рет қаралды 8 М.
Лямбды. Не такие и страшные
36:37
Python Russian
Рет қаралды 10 М.
Как бесплатно замутить iphone 15 pro max
00:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 6 МЛН
Now THIS is entertainment! 🤣
00:59
America's Got Talent
Рет қаралды 40 МЛН
Cool Items! New Gadgets, Smart Appliances 🌟 By 123 GO! House
00:18
123 GO! HOUSE
Рет қаралды 17 МЛН
Sigma girl and soap bubbles by Secret Vlog
00:37
Secret Vlog
Рет қаралды 12 МЛН
Магические методы в python. Dunder методы
1:00:45
forEach и map - ОДНО И ТО ЖЕ?! JAVASCRIPT
9:45
Замыкания (Closures) в Python
30:54
Python Russian
Рет қаралды 14 М.
PYTHON @CLASSMETHOD. 1 ЧАСТЬ
22:20
luchanos
Рет қаралды 2,1 М.
Основное оружие питониста: Listcomps и Genexp
52:55
Python staticmethod and classmethod
7:35
mCoding
Рет қаралды 113 М.
Как бесплатно замутить iphone 15 pro max
00:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 6 МЛН