만일 def __init__(self)을 쓰지 않는다면?

  • 다른 객체를 만들어도 전역변수인 self가 초기화가 되지 않아서 새로운 객체에도 값이 중복됨

  • 따라서 def __init__(self)을 꼭 사용하여야 함


def __init__(self)란?

  • 클래스의 인스턴스가 만들어진 직후 호출되는 초기화 함수


#초기화함수가 없다!

class CRbot_init: 
 ItBuf=[]
 def add(self, szIBuf):
  self.ItBuf.append(szIBuf)

 def prt_dis(self):
  print(self.ItBuf)

if __name__=='__main__':
 ObjRA = CRbot_init() #ObjRA 객체를 생성
 ObjRA.add('Morning')
 ObjRA.prt_dis()

 ObjRB = CRbot_init()  # ObjRB 객체를 생성
 ObjRB.add('After')
 ObjRB.prt_dis()


결과 화면

- ObjRB에 'Morning'이 추가적으로 보임! 값이 중복됨




이를 해결하기 위해서는? 


class CRbot_init:
 def __init__(self): #클래스의 인스턴스가 만들어진 직후 호출되는 초기화 함수이므로, 이를 추가함
  self.ItBuf=[]

 def add(self, szIBuf):
  self.ItBuf.append(szIBuf)

 def prt_dis(self):
  print(self.ItBuf)

if __name__=='__main__':
 ObjRA = CRbot_init()
 ObjRA.add('Morning')
 ObjRA.prt_dis()

 ObjRB = CRbot_init()
 ObjRB.add('After')
 ObjRB.prt_dis()


결과 화면

- 초기화가 되어 ObjRB에 'Morning'이 추가적으로 보이지 않음



+ Recent posts