Back to questions
Junior — Middle
60
Какое преимущество использования __slots__ в Python по сравнению с традиционными способами хранения атрибутов?
Companies where asked
ИнфоТехСервис
Answer from AI
sobes.tech AI
Использование __slots__ в Python позволяет явно указать фиксированный набор атрибутов для экземпляров класса, что даёт несколько преимуществ по сравнению с традиционным хранением атрибутов в словаре __dict__:
- Экономия памяти: Экземпляры с
__slots__не создают словарь для атрибутов, а используют более компактное внутреннее представление, что уменьшает потребление памяти, особенно при большом количестве объектов. - Ускорение доступа: Доступ к атрибутам может быть быстрее, так как отсутствует необходимость поиска в словаре.
Пример:
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
print(p.x, p.y) # 1 2
Однако с __slots__ нельзя динамически добавлять новые атрибуты, не указанные в списке, что ограничивает гибкость, но повышает производительность и экономит память.