Вопрос проверяет понимание структуры объектов и различий между типами атрибутов.
В Python есть атрибуты класса и атрибуты экземпляра. Атрибуты класса общие для всех объектов, а атрибуты экземпляра принадлежат конкретному объекту. Также существуют свойства (property), вычисляемые атрибуты и служебные атрибуты. Все они доступны через точку.
В Python атрибут — это любое значение, связанное с объектом или классом.
Определение:
Атрибут — это переменная или метод, доступный через объект или класс.
Общие для всех экземпляров.
Пример:
class User:
role = "guest"
Все объекты будут иметь это значение, пока оно не переопределено.
Создаются в __init__.
class User:
def __init__(self, name):
self.name = name
Каждый объект имеет собственное значение.
Методы тоже являются атрибутами класса:
User.__dict__
Можно увидеть список атрибутов.
Позволяют вычислять значение при обращении.
class Circle:
def __init__(self, r):
self.r = r
@property
def area(self):
return 3.14 * self.r * self.r
Это выглядит как атрибут, но выполняется код.
Например:
__dict__
__class__
__name__
Они используются интерпретатором.
У классов могут быть атрибуты класса, экземпляра, методы, свойства и служебные атрибуты. Понимание их различий важно для правильного проектирования классов.