Мне интересно услышать некоторое обсуждение атрибутов класса в Python. Например, что является хорошим вариантом использования атрибутов класса? По большей части я не могу придумать случай, когда атрибут класса предпочтительнее использовать атрибут уровня модуля. Если это так, то почему они вокруг?
Проблема, с которой я сталкиваюсь, заключается в том, что по ошибке слишком сложно сбрасывать значение атрибута класса, а затем ваше "глобальное" значение превратилось в атрибут локального экземпляра.
Не забудьте прокомментировать, как бы вы справились со следующими ситуациями:
- Константные значения, используемые классом и/или подклассами. Это может включать в себя словарные клавиши "магического номера" или индексы списков, которые никогда не будут меняться, но возможно потребуется однократная инициализация.
- Атрибут класса по умолчанию, который в редких случаях обновляется для специального экземпляра класса.
- Глобальная структура данных, используемая для представления внутреннего состояния класса, общего для всех экземпляров.
- Класс, который инициализирует ряд атрибутов по умолчанию, не подверженных влиянию аргументов конструктора.
Некоторые похожие сообщения:
Разница между атрибутами класса и экземпляра