weakref
이 모든 것을 수행하는 것을 막을 수있는 장애물이 있습니까? 예 : finalize
은 인터프리터가 종료되기 전에 전화가 걸려오고 통화 순서가 잘 정의되어 있는지 확인합니다.`weakref` 콜백이`__del__`을 대체 할 수 있습니까?
먼 과거에 it was thought 그 weakref
결국 언어에서 __del__
의 제거로 이어질 것으로 보인다.
왜 이런 일이 발생하지 않도록 했습니까?
few use cases for __del__
이있는 것 같습니다. 내가 알고있는 모든 것은 weakref
콜백 또는 weakref.finalize
으로 적어도 잘 작동하는 것으로 보입니다.
업데이트 : PEP 442 극적으로 __del__
의 행동을 개선하고, @gz와 @의 user2357112 언급 weakref
와 우려가 나는쪽으로 언어는 일반적으로 __del__
보다 안정적 만드는쪽으로 이동 궁금하거나하고있어와
__del__
대신 weakref
또는 둘 다를 사용하십시오.
* "이런 일이 발생하지 않도록 방지 할 수있는 이유는 무엇입니까?"* 그 대답은 거의 없을 수도있는 질문입니다. 나는 또한 당신이'python-list'에이 글을 게시 해 일부 핵심 개발자들의 관심을 끌 것을 제안합니다. –
파이썬의 weakref 지원은 꽤 나쁘다. 따라서 weakref를 약한 참조로 삼을만한 많은 유형의 오브젝트에 적용 할 수 없다. 이것은 대개 자신이 작성하는 유형에 대해서는 중요하지 않지만, 유형이'튜플 (tuple) '서브 클래스와 같은 것이면 약식으로 작성할 수 없습니다. – user2357112
weakref 콜백은 참조 대상에 액세스 할 수 없기 때문에보다 신중한 디자인이 필요합니다. – user2357112