본문 바로가기
programming/Python

파이썬 클래스 객체 삭제 또는 제거하기 removing python class object

by 개코 - 개발과 코딩 2021. 11. 11.

프로그램을 개발할 때 사용하지 않는 객체는 삭제나 제거하는 것이 좋다. 메모리관리 측면에서도 좋고, 프로그램의 속도에도 영향이 있을 수 있다. 하드웨어의 성능이 커진 지금같은 때에 크게 의미는 없을 것으로 보이지만, 뭐 사용하지 않는 것은 삭제시키는 것이 오히려 낫기도 하다. 어차피 파이썬은 가비지컬렉터가 있기에 중간에 제거된 경우 메모리는 알아서 확보해 주기도 한다.

파이썬 클래스 객체 또는 제거하기
removing python class object

파이썬에서는 메모리관리를 위한 몇가지 기능이 있다.

자바나 C#같은 가비지컬렉터가 있다고는 하지만 어떤 시점에서 가비지컬렉터가 동작되는지는 모른다.

다만, 객체나 변수 등 삭제가 일어나면 메모리에서의 최종적인 해제는 바로 일어나지 않겠지만, 특정시점에 파이썬의 가비지컬러터가 작동하여 메모리에서 해제되기도 한다.

결과적으로는 데이터 가공과 조작을 위해 클래스가 증가했고, 사용되지 않는 클래스가 있다면 제거하는 것이 좋다.

프로그램 개발 중간에 클래스 객체를 삭제나 제거할 필요가 있다면 del 키워드를 사용한다.

del 키워드

파이썬에서 객체변수를 삭제할 때 사용하는 것이 del 키워드이다.

del 키워드 사용시 참조는 할 수 없다.

del 키워드 사용 후 화면출력을 위한 접근이나 객체변수 등에 접근하려 하면 Exception 예외오류가 발생한다.

파이썬 공식문서 등을 보면 알겠지만, del 키워드 사용시 객체변수는 참조할 수 없도록 제거되지만, 메모리에 공간은 남아있는 상태이다.

파이썬 가비지컬렉터가 움직이면 공간 또한 삭제되어 사용할 메모리를 증가시킨다고 한다.

코드샘플

어쨌든 del 키워드를 사용하여 직접 클래스 객체를 삭제해 보도록 한다.

del 키워드를 사용하면 되기에 어렵지 않다.

이전에 del 키워드를 사용하여 프로퍼티까지 삭제했으니 같이 사용해 보도록 한다.

print('----------')

#- 클래스부분
class pythonClass : #-{

    def __init__(this, prop) : #-{
        this.prop = prop
    #-}

#-}

print('----------')

pyCls = pythonClass("파이썬 클래스")

del pyCls.prop
#-print(type(pyCls.prop), pyCls.prop)

del pyCls
#-print(type(pyCls), pyCls)

print('----------')

어렵지 않다.

del 키워드를 사용하여 프로퍼티를 삭제하든 클래스 객체를 삭제하든 삭제할 대상만 작성해 주면 된다.

화면 출력 메서드인 print() 메서드에 주석이 되어 있는 것에 주목해 보자.

del 키워드를 사용하여 객체를 삭제한 후 print() 메서드나 또는 다른 방식으로 접근할 경우 에러가 발생한다.

반응형

댓글