Python Russian

Python Russian 

простым языком о прекрасном языке программирования

59subscribers

78posts

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

Посмотрим в первом приближении на атрибуты класса, как с ними работать, для чего нужны декораторы classmethod и staticmethod.
1) LEGB - правило продолжает действовать для простых имен переменных и их поиска
2) для self атрибутов поиск идет сначала в объекте, потом в классе, затем у предков OCP(object-class-parent). То есть через селф можно достучаться как к обычным методам/атрибутам, так и к классовым, статичным
3) если через self пытаться поменять неизменяемый атрибут (строка) класса, то будет создана локальная копия, ее не увидят другие объекты класса
4) если менять через self изменямый атрибут класса (список), то он изменится для всех объектов класса
5) cls - это ссылка на класс (не объект!), питон передает его под капотом. cls = Class
6) classmethod используется для работы с атрибутами класса и с другими методами класса. Часто используется для конструирования готовых объектов
7) staticmethod не получает ссылок под капотом, это просто функция связанная контекстом с классом. Используется редко и часто завуалированно
Читать:
https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables
https://docs.python.org/3/library/functions.html?highlight=classmethod#staticmethod
Subscription levels3

Большое спасибо

$2.59 per month
На поддержку канала и просто в знак благодарности

На новые идеи

$6.5 per month
Чтобы новые видео появлялись и для поддержки вдохновения

Show must go on...

$13 per month
На хорошее кофе и для металлу в голосе
Go up