32. Python에서의 캡슐화 – 생성자와 소멸자

안녕하세요. 언제나 휴일, 언휴예요

이전 강의에서는 메서드의 종류(멤버 메서드, 클래스 메서드, 정적 메서드)를 살펴보았죠. 이번 강의에서는 개체를 생성할 때와 소멸할 때 수행할 코드를 정의하는 생성자와 소멸자를 알아봅시다.

Python에서 생성자와 소멸자는 메서드 이름이 __init__, __del__ 으로 정해졌습니다. __init__은 생성자 메서드의 이름으로 여기에서는 초기화 메서드라고 부르고 있습니다. __del__은 소멸자 메서드 이름입니다. 개체를 생성할 때는 <형식 이름(인자)>을 사용하고 소멸할 때는 <del 변수명>을 사용합니다.

다음은 개체를 생성할 때 __init__ 메서드를 수행하고 소멸할 때 __del__ 메서드를 수행함을 확인하는 예제 코드입니다.

#생성자와 소멸자

class Unit:
    def __init__(self):
        print("__init__ 메서드 수행")

    def __del__(self):
        print("__del__ 메서드 수행")

unit = Unit()
print("====")
del unit
[그림 1] 생성자와 소멸자 예제 실행화면
[그림 1] 생성자와 소멸자 예제 실행화면

개체를 생성할 때는 필요에 의해 인자를 전달할 수도 있어요. 예를 들어 유닛 개체를 생성할 때 유닛 번호와 이름을 전달할 수도 있어요. Python에서는 __init__ 메서드의 입력 인자를 개발자 목적에 맞게 정의할 수 있어요. 하지만 __del__ 메서드의 입력 인자는 개발자가 변경할 수 없어요.

다음은 유닛 번호와 이름을 생성할 때 전달하는 예제 코드입니다.

#입력 인자가 있는 생성자

class Unit:
    def __init__(self,num, name):
        self.__num = num
        self.__name = name

    def GetNum(self):
        return self.__num

    def GetName(self):
        return self.__name

unit = Unit(2,"홍길동")
print("번호:{0} 이름:{1}".format(unit.GetNum(), unit.GetName()))
[그림 2] 입력 인자가 있는 생성자 예제 실행 화면