만일 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'이 추가적으로 보이지 않음