[Python] 파이썬의 생성자와 소멸자
- Language/Python
- 2021. 1. 17.
파이썬에서 클래스를 만들 경우, 생성자와 소멸자를 만들어서 원하는 값을 세팅하거나 해제시킬 수 있다. 예를들어 우리가 형태소 분석기를 파이썬으로 직접 만든다고 가정을 해보자. 그러면 형태소 분석기의 객체를 생성하는 것과 동시에 품사 사전을 읽어야 될 것이다.
이런것들 뿐만 아니라 해당 클래스에 속한 메소드들이 공통으로 사용하는 값들이 존재한다면, 생성자를 통해서 값을 세팅할 수 있을 것이다.
생성자
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로 삭제를 하니 소멸자가 호출되는 것을 확인할 수 있다.
반응형
'Language > Python' 카테고리의 다른 글
[Python] 파이썬, 소인수 분해하기 (0) | 2021.05.22 |
---|---|
[Python] 파이썬으로 랜덤(random) 사용 및 로또 만들기 (0) | 2021.01.29 |
[Python] 파이썬, 문자열 포맷팅 하기(format 함수) (0) | 2021.01.17 |
[Python] 파이썬, 데이터를 걸러주는 Filter 내장함수 (0) | 2021.01.11 |
[Python] 파이썬, If~else 조건문 설명 (조건부 포함식 포함) (0) | 2021.01.10 |