import sys import time from collections import namedtuple from memory_profiler import profile class A: __slots__ = ('_name', '_age', '_score') def __init__(self, name=None, age=None, score=None): self._name = 'aaaa' self._age = 'vbba' self._score = '1111' def test1(self): num =1 while True: num = num + 1 if num > 1000000: break ddd=self._name for i in range(100): ddd class B(A): # __slots__ = () def __init__(self): super().__init__() def test(self): print(self._name) a= A() b = B() b.test() # print(b._name) # print(sys.getsizeof(a), sys.getsizeof(b)) # print(sys.getsizeof(a.__dict__), sys.getsizeof(b.__dict__)) @profile def main(): Point = namedtuple('Point', ('x', 'y', 'z')) object_list = [Point(i,i,i) for i in range(100000)] if __name__=='__main__': # main() # print(A().__dict__) ss = time.time() A().test1() print(time.time() - ss)