Junior — Middle
78
Quel est l'avantage d'utiliser __slots__ en Python par rapport aux méthodes traditionnelles de stockage des attributs?
Entreprises à qui on a demandé
ИнфоТехСервис
Réponse de l'IA
sobes.tech IA
Использование __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__ нельзя динамически добавлять новые атрибуты, не указанные в списке, что ограничивает гибкость, но повышает производительность и экономит память.