[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