후속 클래스 인스턴스에 대한 동일한 객체 ID
이름을 할당하지 않고 클래스의 여러 인스턴스를 생성할 때 Python은 동일한 ID를 그들 모두. 얼핏 놀랄 수도 있는 이 동작은 Python의 객체 수명 개념 때문입니다.
객체의 ID는 객체의 수명 동안에만 고유성을 보장합니다. 제공된 예제에서 someClass()는 단일 문의 범위 내에서 여러 번 호출됩니다. 호출할 때마다 새 개체가 생성됩니다. 그러나 이러한 객체는 어떤 변수에도 할당되지 않고 명령문 실행이 완료된 직후 해당 범위가 끝나므로 가비지 수집에 사용할 수 있게 됩니다.
Python의 기본 구현인 CPython에서 가비지 수집은 참조 계산을 사용합니다. 또한 개체의 ID는 해당 메모리 위치와 연결되어 있습니다. 이러한 요인의 조합은 someClass()의 결과 인스턴스가 동일한 ID를 공유하는 이유를 설명합니다. 동일한 함수 범위에서 새 개체가 생성되면 메모리 할당이 취소되고 재사용됩니다.
이 동작을 해결하고 클래스에 고유한 ID를 보장하려면 인스턴스의 경우 데이터 구조에 객체를 유지하거나 클래스 내에서 사용자 정의 ID 체계를 구현하는 것을 고려해보세요.
위 내용은 연속적이고 이름이 없는 Python 클래스 인스턴스가 동일한 개체 ID를 공유하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!