파이썬 소멸자 정리 (__del__)


1. 소멸자란?

2. 기본 형태

class MyClass:
    def __del__(self):
        print("객체가 삭제됩니다.")

3. 사용 예시

class FileHandler:
    def __init__(self, filename):
        self.file = open(filename, 'w')
        print("파일 열림")

    def __del__(self):
        self.file.close()
        print("파일 닫힘")

f = FileHandler("test.txt")
del f  # 명시적으로 삭제

4. 동작 타이밍

5. 강제 소멸

del 객체명

6. 주의사항

주의점

설명

예외 처리 어려움

__del__

내부에서 예외가 발생해도 무시됨 (경고만 출력)

순환 참조

__del__

이 정의된 객체가 순환 참조되면 소멸되지 않을 수 있음

객체 존재 여부

소멸 시점에는 다른 속성이나 변수들이 이미 사라졌을 수 있음 →

AttributeError

주의

7. 좋은 사용 사례

8. 대안: with 문 사용

with open("file.txt", "w") as f:
    f.write("안녕하세요")
# 자동으로 파일 닫힘



Revision #1
Created 16 June 2025 06:44:35 by Dain
Updated 16 June 2025 06:44:46 by Dain