Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 클래스와 클래스 속성은 언제 가비지 컬렉션될까?

클래스 속성과 전역 변수의 수명

파이썬에서 클래스 속성(class attribute)은 해당 속성을 가리키는 마지막 참조가 사라질 때까지 존재합니다. 마찬가지로 전역 변수(global variable) 역시 마지막 참조가 제거될 때까지 메모리에 유지됩니다.

여기서 중요한 점은, 이 두 대상 모두 프로그램이 종료될 때까지 반드시 살아 있다고 보장되지 않는다는 것입니다. 즉, 생존 여부는 프로그램의 실행 기간이 아니라 참조의 존재 여부에 의해 결정됩니다.

모듈 스코프에 정의된 클래스의 수명

모듈 최상위 레벨(모듈 스코프)에서 정의된 클래스는 곧 전역 변수입니다. 따라서 이 경우에는 클래스 자체와 그에 따른 클래스 속성이 일반적인 전역 변수와 동일한 수명 주기를 갖게 됩니다.

가비지 컬렉션이 발생하는 조건

만약 해당 클래스의 인스턴스가 더 이상 살아 있지 않고, 클래스 객체와 클래스 속성에 대한 참조 카운트(reference count)가 0이 된다면, 파이썬의 가비지 컬렉터가 이들을 메모리에서 회수할 수 있습니다.

정리하면, 클래스와 클래스 속성의 해제 시점은 코드 작성 위치나 프로그램 진행 상황이 아니라 오직 참조가 남아 있는지 여부에 달려 있다는 것입니다.