Python 입문 | 클래스 사용 | 생성자 사용


그렇게 하더라도,이 Member클래스 별로 유용하지 않는다. 인스턴스를 만들고, name을 설정하여 showMsg를 호출 … 결국 하나 하나 다하고 있는 것은 클래스를 사용하지 않는 경우와 별로 차이가 없다. 게다가 인스턴스를 만든 후에 멤버 변수의 설정을 잊으면, 생각대로 움직이지 않게 되어 버린다. 적어도 “필요한 값은 처음부터 제대로 설정 사용"하도록 하고 싶다.

이럴 때에 유용한 것이 ‘생성자(constructor)‘라는 것이 있다. 생성자는 “인스턴스를 만들 때 자동으로 호출되는 인스턴스 초기화를 위한 특별한 방법"이다. 이것은 다음과 같이 만든다.

def __init __ (self 인수 ...):
    ...... 초기화 처리 ......

생성자는 “__init__“와 같은 이름으로 메소드를 작성한다. 만약 어떤 값을 인수로 전달 싶다면, 2번째 인수 이후에 지정한다(첫번째 인수는 반드시 self이다).

이와 같이 생성자를 준비하면 인스턴스를 만들 때, 이 생성자를 사용하게 된다. 아래 예제를 보도록 하자.  

class Member: 
   name = "" 
  
   def __init__(self, str): 
       self.name = str
  
   def showMsg(self): 
       print("Hello," + self.name + ".How are you?") 
  
taro = Member("Taro") 
taro.showMsg() 
  
hanako = Member("Hanako") 
hanako.showMsg()

여기에서는 다음과 같이 하여 str라는 인수를 전달하는 형태로 생성자를 제공하고 있다.

def __init__(self, str):

이제 인스턴스를 만들 때 name을 설정해야 한다. 실제로 인스턴스를 만들고 있는 곳을 보면,

taro = Member("Taro")

이런 식으로 ()에 이름을 인수로 넣고 있는 것을 볼 수 있다. 이렇게 해서 인수를 지정하여 인스턴스를 만들 수 있게 하면 필요한 멤버 변수의 설정도 한꺼번에 할 수 있어 매우 편리하다.