Что такое slots ?

Спросят с вероятностью 13%



slots - это механизм, который позволяет явно определить ограниченный набор атрибутов (полей) для экземпляров класса. Обычно атрибуты экземпляров создаются динамически при их присваивании, что может приводить к потреблению памяти, особенно при работе с большим количеством экземпляров класса.



Когда вы определяете slots для класса, то определяете фиксированный набор атрибутов, которые могут существовать для экземпляров этого класса. Это позволяет экономить память и улучшать производительность, особенно в случае, когда у вас есть много экземпляров класса.



Пример:

class MyClass:

slots = ['x', 'y']



def init(self, x, y):

self.x = x

self.y = y



obj = MyClass(10, 20)

print(obj.x) # Вывод: 10

print(obj.y) # Вывод: 20



# Попытка присвоить атрибут, не определенный в slots, вызовет ошибку

# obj.z = 30 # Вызовет AttributeError




В этом примере у класса MyClass есть определение slots, которое ограничивает атрибуты экземпляра класса только x и y. Попытка присвоить значение атрибуту z вызовет ошибку AttributeError.



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



➡️ Примеры ответов

➡️ Список всех вопросов на Python Developer



🧩 Идущий | 🔐 Собесы | 🔐 Тестовые