class Resolver:
__slots__ = ["driver", "resolver_context", "solve_context", "status_mapper", "phase_history"]
def __init__(self, driver: WebDriver, resolver_context: ResolverContext, status_mapper):
self.driver = driver
self.driver.set_window_size(1300, 1000)
self.resolver_context = resolver_context
self.solve_context = None
self.driver.get(INSTAGRAM_HOST)
self.status_mapper = status_mapper
self.phase_history = []
python은 객체가 생성되면 객체마다 객체의 속성 저장을 위해 __dict__ 을 사용한다.
하지만 그로인하여 메모리를 많이 사용하게되는데, __slots__은 객체마다 생성되는 __dict__의 생성을 막아 메모리 효율성을 높여준다.
객체의 속성 추가가 제한되어 성능 향상을 기대할 수 있는 것이다.
기존의 딕셔너리로 관리하는 속성을 집합형태(set)으로 바꿈으로써 동작하는 원리이다.
위의 예제와 같이 slot을 지정해주게 되면 네임 스페이스를 dict를 통해 관리하지 않는다.
데이터가 많아 질 수록 성능 차이는 심해질 것이다.