Створимо простенький клас з двома полями цілих чисел.
class A:
x: int
y: int
def __init__(self, x, y):
self.x, self.y = x, y
Тепер перевіримо його розмір
>>> import sys
>>> sys.getsizeof(A)
1712
>>> sys.getsizeof(A(3,4))
48
getsizeof
повертає значення у байтах.
А тепер клас B з тими ж полями, але з додатковою вказівкою.
class B:
x: int
y: int
__slots__ = ("x", "y")
def __init__(self, x, y):
self.x, self.y = x, y
>>> sys.getsizeof(B)
944
>>> sys.getsizeof(B(3,4))
48
Тепер можемо порівняти розміри цих класів
>>> sys.getsizeof(A) - sys.getsizeof(B)
768
Клас B менший за A на 768 байтів через те що клас B не має атрибута __dict__
.
#python #class #slots #оптимізація #класи #пам'ять