Sobes.tech
Junior — Middle
92

Python'da __slots__ nima va ular ob'ektlarning xotira boshqaruviga qanday ta'sir qiladi, tushuntirib bera olasizmi?

Qaerda so'ralgan kompaniyalar
МТСМТС
Оптимакрос
СБЕР Центр ИИСБЕР Центр ИИ
Бергман Инфотех
СБЕР РоботыСБЕР Роботы

AIdan javob

sobes.tech AI

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

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

Пример использования:

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

# p.z = 3  # вызовет AttributeError, так как 'z' не в __slots__

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