여러 개체에 대한 동일한 ID: Python의 기발한 동작
Python에서 이름을 할당하지 않고 여러 개체를 생성하면 실제로 개체를 공유하게 될 수 있습니다. 같은 아이디. 이 명백한 역설은 객체의 ID가 해당 수명 내에서만 고유하다는 사실에서 비롯됩니다.
someClass()와 같이 객체를 참조하는 변수를 생성하면 객체의 수명은 변수가 범위를 벗어나면 할당되고 종료됩니다. 제공한 예에서는 다음을 제공합니다.
print(someClass()) print(someClass())
두 개의 someClass() 호출로 인해 두 개의 개체가 생성되지만 둘 다 동일한 인쇄 호출 내에서 생성되고 삭제됩니다. 따라서 동일한 수명을 공유하고 동일한 ID를 가질 수 있습니다.
이 동작은 Python 3.3.3의 가비지 수집을 위한 참조 계산 사용에서 더욱 두드러집니다. 객체의 참조 횟수가 0에 도달하면(즉, 어떤 변수도 이를 참조하지 않음) 삭제 대상이 됩니다. 이 예에서 someClass()에 대한 두 번째 호출로 인해 첫 번째 개체의 참조 횟수가 0이 되어 즉시 할당 해제가 가능해집니다.
할당될 다음 개체가 동일한 메모리 위치에 배치되므로 첫 번째 객체로서 동일한 ID로 끝납니다. 이는 동일한 클래스를 연속적으로 여러 번 호출하면 동일한 ID를 가진 객체가 생성될 수 있는 이유를 설명합니다.
객체에 고유한 ID가 필요한 경우 명시적으로 해당 객체를 변수에 할당하고 유지함으로써 이러한 동작을 극복할 수 있습니다. :
a = someClass() b = someClass() print(id(a)) print(id(b))
여기서 a와 b는 같은 클래스에 속하더라도 서로 다른 ID를 갖는 별도의 개체를 나타냅니다. 또는 고유한 클래스별 ID 메커니즘을 구현하여 고유성을 보장할 수 있습니다.
위 내용은 여러 Python 개체가 때때로 동일한 ID를 공유하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!