파이썬 소멸자

Vaibhhav Khetarpal 2021년10월22일
파이썬 소멸자

소멸자는 Python 객체를 정리해야 할 때 호출됩니다. 기본적으로 생성자와 완전히 반대되는 역할을 하며 생성자가 수행하는 작업을 반대로 하는 데 사용됩니다. 소멸자는 주로 프로그램을 구성하고 코딩 표준을 구현하기 위해 배포됩니다.

이 튜토리얼은 파이썬에서 소멸자의 사용을 보여줍니다.

Python에서 소멸자의 필요성은 Python의 가비지 수집기가 메모리 관리를 자동으로 처리하기 때문에 C++와 같은 다른 프로그래밍 언어만큼 많지 않습니다. 그러나 소멸자는 Python에 존재하며 이 기사에서는 소멸자의 사용법과 기능에 대해 설명합니다.

파이썬에서 소멸자로 __del__() 함수를 사용합니다. 프로그래머가 __del__() 함수를 호출하면 모든 객체 참조가 제거되며, 이를 가비지 수집이라고 합니다.

소멸자의 구문은 다음과 같습니다.

def __del__(self):
    # Write destructor body here

Python 프로그램에서 소멸자를 사용하는 이점은 다음과 같습니다.

  1. 불필요한 공간을 많이 차지하는 개체가 자동으로 삭제되어 메모리 공간이 확보됩니다.
  2. 자동으로 호출되기 때문에 쉽습니다.

다음 코드는 Python에서 소멸자를 사용합니다.

class Fruits:
    # Calling constructor
    def __init__(self):
        print("Fruits created.")

    # Calling destructor
    def __del__(self):
        print("Destructor called, Fruits deleted.")


obj = Fruits()
del obj

위의 코드는 다음과 같은 출력을 제공합니다.

Fruits created.
Destructor called, Fruits deleted.

위의 코드는 프로그램이 종료된 후 또는 개체에 대한 지정된 모든 참조가 삭제된 후 소멸자가 호출되었음을 보여줍니다. 이것은 주어진 객체에 대한 참조 횟수의 값이 특정 시점 이후에 0이 되고 주어진 객체가 범위를 벗어날 때가 아님을 의미합니다.

소멸자를 더 자세히 설명하는 또 다른 코드가 있습니다.

class Fruits:
    def __del__(self):
        print("Fruits deleted")


a = Fruits()
del a
a = Fruits()
b = a
del b
del a

위의 코드에서 Fruits 클래스가 정의되고 a 객체는 클래스에 대한 참조이고 b 개체는 해당 참조 a의 로컬 복사본입니다. b가 삭제되면 이 함수는 로컬 복사본만 보유하고 다른 것은 보유하지 않기 때문에 호출되지 않습니다.

생성자와 소멸자는 프로그래머가 사용하는 언어에 관계없이 프로그래밍 세계에서 필수적입니다. 소멸자는 가비지 수집에서 중요한 역할을 합니다. 작은 코드 덩어리에서는 큰 변화를 볼 수 없지만 메모리 사용이 큰 우선 순위인 복잡한 프로그램과 프로덕션 수준 코드에서는 소멸자의 중요성이 매우 명확하게 보입니다.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

관련 문장 - Python Class