Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: oop, slots, memory optimization

Что такое __slots__

Этот вопрос проверяет понимание механизма __slots__ в Python, который используется для оптимизации использования памяти, предотвращая создание словаря для хранения атрибутов класса.

Короткий ответ

__slots__ — это специальный атрибут класса, который ограничивает набор атрибутов, которые можно присваивать экземплярам этого класса. Он помогает экономить память, исключая создание словаря для хранения атрибутов объектов.

Длинный ответ

По умолчанию, в Python для каждого экземпляра класса создаётся словарь, который хранит его атрибуты. Это удобно, но требует памяти. Если необходимо существенно сократить использование памяти, можно использовать __slots__, чтобы ограничить список атрибутов, которые могут быть у экземпляра класса.
Когда используется __slots__, для каждого объекта будет выделено меньше памяти, так как не создаётся стандартный словарь атрибутов. Вместо этого создаётся фиксированное количество слотов для атрибутов, что уменьшает overhead.

Пример:

class Point:
    	__slots__ = ['x', 'y']  # Только x и y могут быть атрибутами

    	def __init__(self, x, y):
        	self.x = x
        	self.y = y

p = Point(1, 2)
print(p.x, p.y)  # 1 2
# p.z = 3  # Ошибка: 'Point' object has no attribute 'z'

__slots__ помогает сэкономить память, но ограничивает гибкость, так как нельзя динамически добавлять атрибуты к объектам.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Python

    Python

Ключевые слова

#oop

#slots

#memory optimization

Подпишись на Python Developer в телеграм