Python에는 __del__(self)와 유사한 특수 메서드가 많이 있습니다. 그 중 __gt__(), __le__() 등과 같은 일부는 이름으로 대략적인 함수를 추측할 수 있지만 일부는 마음대로 추측할 수 없습니다. (물론 나만 이런 일을 할 수도 있다.) 예를 들어 __del__()과 del이 여기에 등장할 예정이다. 나는 객체가 삭제될 때 __del__()이 호출될 것이라고 생각했었다. 하지만 몇번이고 필기시험을 치르고, 불합격 이후에는 이런 세세한 점들을 더 알아보기 시작했습니다^_^!
자세히 이야기하고 요점을 말씀드리겠습니다!
del은 실제로 개체의 참조 횟수를 1씩 줄여야 한다는 것을 알고 있습니다. 그러나 __del__()은 호출될 때마다 호출되지 않는다는 점에 유의하세요. 예에서 알 수 있듯이 객체의 참조 횟수가 0으로 떨어질 때 __del__()이 호출되기 때문입니다.
>>> class C: def __del__(self): print("I'm vanishing...") >>> c = C() >>> b = c # 注意,此时对C()的引用计数为2 >>> del b >>> # 瞧,什么输出都没有,说明__del__()并没调用 >>> del c I'm vanishing... # 引用计数降为0后才被调用 >>>