▶️ Атрибуты класса, classmethod и staticmethod
Посмотрим в первом приближении на атрибуты класса, как с ними работать, для чего нужны декораторы classmethod и staticmethod
⏺ LEGB – правило продолжает действовать для простых имен переменных и их поиска
⏺ Для self атрибутов поиск идет сначала в объекте, потом в классе, затем у предков OCP(object-class-parent). То есть через self можно достучаться как к обычным методам/атрибутам, так и к классовым, статичным
⏺ Если через self пытаться поменять неизменяемый атрибут (строка) класса, то будет создана локальная копия, ее не увидят другие объекты класса
⏺ Если менять через self изменямый атрибут класса (список), то он изменится для всех объектов класса
⏺ cls – это ссылка на класс (не объект!), питон передает его под капотом. cls = Class
⏺ classmethod используется для работы с атрибутами класса и с другими методами класса. Часто используется для конструирования готовых объектов
⏺ staticmethod не получает ссылок под капотом, это просто функция связанная контекстом с классом. Используется редко и часто завуалированно
▶️ Смотреть на YouTube
Post #487
458