> Как реализуются атрибуты в классах Python (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: CoMagic, TradingView

Стек: Python

> Пример ответа

В Python атрибуты классов реализуются через пространства имён (словари __dict__) и механизм поиска по цепочке MRO (Method Resolution Order). Атрибуты бывают двух типов: атрибуты класса (class attributes) и атрибуты экземпляра (instance attributes).

Атрибуты класса определяются непосредственно в теле класса и хранятся в ClassName.__dict__. Они общие для всех экземпляров:

PYTHON
class Car:
wheels = 4 # атрибут класса

Атрибуты экземпляра создаются через self в методах (обычно в __init__) и хранятся в instance.__dict__:

PYTHON
class Car:
def __init__(self, color):
self.color = color # атрибут экземпляра

Механизм доступа: при обращении obj.attr Python сначала ищет атрибут в obj.__dict__, затем в type(obj).__dict__, и далее по цепочке базовых классов (MRO). Это позволяет переопределять атрибуты класса на уровне экземпляра.

Динамическое управление: атрибуты можно добавлять, изменять и удалять в рантайме через setattr(), getattr(), delattr() или напрямую через __dict__. Для контроля доступа используются дескрипторы (property, __getattr__, __setattr__, __getattribute__).

Слоты (slots) - механизм оптимизации, фиксирующий набор атрибутов и заменяющий __dict__ на кортеж дескрипторов, что экономит память и ускоряет доступ.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью