Встречается на собеседованиях • сегодня
Как меняется поведение класса после определения __slots__
Определение __slots__ в классе ограничивает набор допустимых атрибутов экземпляров, что приводит к нескольким изменениям:
- Экономия памяти - экземпляры хранят атрибуты в фиксированном массиве вместо
__dict__, что уменьшает их размер - Быстрый доступ - доступ к атрибутам становится немного быстрее
- Запрет динамических атрибутов - нельзя добавлять новые атрибуты, не указанные в
__slots__
Пример:
python
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
p.z = 3 # AttributeError: 'Point' object has no attribute 'z'Важно: __slots__ наследуется, но если дочерний класс не определит свои __slots__, у него будет __dict__ и можно добавлять атрибуты. Для полного запрета нужно явно указать __slots__ = () в дочернем классе.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы