В Python и других объектно-ориентированных языках классы считаются основой для создания объектов. Экземпляр – это копия класса с действительными значениями.
Чтобы определить класс в Python3, вы можете сделать следующее:
Атрибуты класса
Атрибуты класса — это атрибуты, принадлежащие самому классу. Они будут общими для всех экземпляров класса. Поэтому они будут иметь одинаковое значение для каждого экземпляра. Мы определяем атрибуты класса вне всех методов, обычно они размещаются вверху, прямо под заголовком класса.
Атрибуты экземпляра
Атрибуты экземпляра принадлежат конкретным экземплярам класса. Это означает, что для двух разных экземпляров атрибуты экземпляра обычно различны. Давайте дадим нашему классу Dog атрибут экземпляра «имя».
Питонический путь
Python имеет особый способ работы с геттерами и сеттерами. Обычный метод включает в себя размещение dunders для частных методов/атрибутов и подчеркивания для защищенных методов/атрибутов. Декораторы свойств и сеттеров также используются для обозначения методов как сеттеров/геттеров.
Различия между атрибутами класса и экземпляра
Самые большие различия между атрибутами класса и экземпляра заключаются в том, что атрибуты класса могут быть объявлены вне методов и существовать в разных экземплярах классов. Атрибуты экземпляра, однако, используют методы установки для создания экземпляров клонов родительского класса.
Преимущества и недостатки
Преимущество наличия атрибутов экземпляра заключается в том, что вы можете анализировать и очищать данные, которые передает пользователь, прежде чем назначать их экземпляру класса. Это также означает, что вы можете выдавать ошибки, если они не соответствуют установленным вами требованиям. Создаваемые объекты также могут быть уникальными в пределах методов установки. Недостатки включают
__dict__
Если вы хотите проверить все атрибуты вашего класса, вы можете использовать специальный метод __dict__ для их вывода.
Я думаю, что теперь вы знаете больше об атрибутах класса и экземпляра в Python. Если вам понравилось то, что вы прочитали, не стесняйтесь подписываться на меня в Твиттере.