[python] 클래스의 소멸 메서드

파이썬 클래스를 사용하다 보면 클래스의 인스턴스가 삭제될 때 어떤 동작을 수행해야 할 경우가 있습니다. 이때 소멸 메서드를 사용할 수 있습니다. 소멸 메서드는 인스턴스가 메모리에서 삭제될 때 호출되는 특별한 메서드입니다.

__del__ 메서드

파이썬에서는 소멸 메서드를 __del__이라는 이름의 특수한 메서드로 정의합니다. 클래스 내에 __del__ 메서드를 정의하면 해당 클래스의 인스턴스가 소멸될 때 자동으로 호출됩니다.

class MyClass:
    def __init__(self, name):
        self.name = name
        
    def __del__(self):
        print(f"{self.name} 인스턴스가 삭제되었습니다.")

obj = MyClass("example")
del obj  # 인스턴스 삭제

위 예제에서 obj 인스턴스가 del 키워드를 통해 삭제될 때, __del__ 메서드가 자동으로 호출되어 “example 인스턴스가 삭제되었습니다.”라는 메시지가 출력됩니다.

주의사항

__del__ 메서드는 명시적으로 호출되지 않으며, 파이썬 인터프리터가 자동으로 호출합니다. 따라서 사용 시에 주의해야 합니다.

소멸 메서드를 사용하는 경우, 메모리 누수 및 자원 관리에 대한 주의가 필요합니다. 또한, 상위 객체에서 하위 객체를 참조하는 경우 순환 참조로 인해 예기치 않은 동작이 발생할 수 있으므로 주의해야 합니다.

소멸 메서드는 필요한 경우에만 사용하여 잘못된 동작을 방지하고 메모리 관리를 보다 안정적으로 수행할 수 있도록 합니다.

결론

파이썬 클래스의 소멸 메서드인 __del__은 인스턴스가 삭제될 때 호출되는 특별한 메서드입니다. 적절하게 활용하면 메모리 관리와 자원 관리를 보다 효율적으로 수행할 수 있습니다.


참고: 파이썬 공식 문서 (한국어)