Python의 "__del__" 소멸자

Python에서 __del__은 클래스의 소멸자(Destructor)로서, 인스턴스가 메모리에서 삭제될 때(소멸될 때) 호출되는 특별한 메서드입니다. 

 

__del__ 메서드는 인스턴스의 사용이 끝나고 해당 인스턴스의 메모리를 해제하는 등의 마무리 작업을 수행하는데 사용됩니다.

소멸자는 주로 인스턴스가 생성될 때 필요한 자원을 할당했을 경우, 해당 자원을 해제하는 작업에 사용됩니다. 예를 들어, 파일 핸들이나 데이터베이스 연결 등과 같이 메모리 외의 자원을 사용한 경우, 인스턴스가 소멸될 때 해당 자원을 해제하여 메모리 누수를 방지하는 등의 용도로 활용될 수 있습니다.

하지만 주의할 점은 파이썬에서는 일반적으로 객체의 메모리 해제는 가비지 컬렉터(Garbage Collector)가 자동으로 처리합니다. 따라서 소멸자를 직접 정의할 일은 그리 많지 않습니다. 만약 메모리 외의 자원을 사용했을 때에는 __del__ 메서드를 사용하여 해당 자원을 해제하고 메모리 누수를 방지할 수 있지만, 이보다는 with 문과 같은 context manager를 사용하는 것이 더 권장됩니다.

아래는 __del__ 메서드를 사용하는 간단한 예제입니다

class Resource:
    def __init__(self, name):
        self.name = name
        print(f"Resource {self.name} created.")

    def __del__(self):
        print(f"Resource {self.name} deleted.")

# 인스턴스 생성
res1 = Resource("File1")
res2 = Resource("File2")

# 인스턴스가 더 이상 사용되지 않을 때 메모리에서 삭제됨
# 메모리 해제 시 __del__ 메서드가 호출됨
del res1
del res2

위의 예제에서 Resource 클래스의 __del__ 메서드는 인스턴스가 소멸될 때 호출되어 "Resource [인스턴스 이름] deleted." 메시지를 출력합니다.

 

res1과 res2 인스턴스가 더 이상 사용되지 않을 때, del 키워드에 의해 인스턴스가 삭제되면서 __del__ 메서드가 호출되며, 이 때 메시지가 출력됩니다.