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__ 메서드가 호출되며, 이 때 메시지가 출력됩니다.
'백엔드 프레임워크 & 언어 > Python' 카테고리의 다른 글
"from datetime import datetime"과 "from datetime import timedelta" (0) | 2023.07.24 |
---|---|
Python "__doc__" 스트링 (0) | 2023.07.24 |
Python의 "__init__" 생선자 (0) | 2023.07.24 |
Python "__name__" 속성 (0) | 2023.07.24 |
Python에서 __init__.py 파일의 역할 (0) | 2023.07.24 |