[Python] 파이썬의 생성자와 소멸자

    파이썬에서 클래스를 만들 경우, 생성자와 소멸자를 만들어서 원하는 값을 세팅하거나 해제시킬 수 있다. 예를들어 우리가 형태소 분석기를 파이썬으로 직접 만든다고 가정을 해보자. 그러면 형태소 분석기의 객체를 생성하는 것과 동시에 품사 사전을 읽어야 될 것이다. 

     

    이런것들 뿐만 아니라 해당 클래스에 속한 메소드들이 공통으로 사용하는 값들이 존재한다면, 생성자를 통해서 값을 세팅할 수 있을 것이다.

     

    파이썬의 생성자와 소멸자

     

    생성자

    class 클래스명:
        def __init__(self):

    생성자는 __init__ 메소드를 만들면 된다. self는 기본적으로 생성이 되며 값을 세팅하고 싶을 경우 self 이후에 인자값을 지정하면 된다.

     

    소멸자

    class 클래스명:
    	def __del__(self):

    클래스가 소멸하게 될 경우 실행되는 메소드로 __del__로 메소드를 직접 만들 수 있다.

     

    생성자와 소멸자 예시

    class Test:
        def __init__(self, name):
            print(name, ' 생성자입니다만...')
    
        def __del__(self):
            print('소멸자입니다만...')
    
        def test(self):
            print('테스트입니다만...')
            
    print('begin...')
    test = Test('홍길동')
    test.test()
    print('end...')

    위 예시 코드는 Test라는 클래스에 생성자와 소멸자를 만들고, test라는 메소드도 만들었다. 이후 홍길동이라는 인자값을 가진 Test 클래스를 선언하고, 곧장 test() 메소드를 호출한 예제이다. 위 내용의 실행 결과는 아래와 같다.

     

    begin...
    홍길동  생성자입니다만...
    테스트입니다만...
    end...
    소멸자입니다만...
    

     

    위 결과를 보면 begin -> 생성자 -> test 함수 -> end -> 소멸자 호출 순서이다. 파이썬의 마지막은 객체들을 해제하는 작업이 진행되는 것을 확인할 수 있다. end 문자열을 출력하기 전에 test 변수를 삭제한다면...

     

    print('begin...')
    test = Test('홍길동')
    test.test()
    del(test)
    print('end...')
    

    print 이전에 del(test)로 test 변수를 삭제하였다

     

    begin...
    홍길동  생성자입니다만...
    테스트입니다만...
    소멸자입니다만...
    end...

    결과는 del로 삭제를 하니 소멸자가 호출되는 것을 확인할 수 있다. 

     

     

    반응형

    댓글

    Designed by JB FACTORY