-
[Python] 객체 지향 프로그래밍 - __init__() 메소드를 정의하는 이유Python/Python Programming 2018. 4. 28. 19:27
파이썬 __init__() 메소드
__init__() 객체가 생성될 때, 호출되는 메소드로써, 객체의 초기화를 담당. init는 최기화한다는 뜻. (initialize)
1. __init__()를 지정하지 않았을 때
class ClassLst: lst = ['a','b','c'] def addlst(self, text): self.lst.append(text) def print_lst(self): print(self.lst) if __name__ == '__main__': a = ClassLst() a.addlst('d') print(a.print_lst()) b = ClassLst() b.addlst('e') print(b.print_lst()) ----------------------- ['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd', 'e']
클래스 속성으로 정의된 lst를 ClassLst의 모든 인스턴스가 공유되어 b의 결과에 'd' 가 포함되었다.
2. __init__()를 지정하였을 때
class ClassLst: def __init__(self): self.lst = ['a','b','c'] def addlst(self, text): self.lst.append(text) def print_lst(self): print(self.lst) if __name__ == '__main__': a = ClassLst() a.addlst('d') print(a.print_lst()) b = ClassLst() b.addlst('e') print(b.print_lst()) ------------------------------------- ['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'e']
__init__() 안의 lst를 각 객체마다 고유한 인스턴스를 사용하므로, 정상적으로 출력된다.
'Python > Python Programming' 카테고리의 다른 글
[Python] 파이썬 requests 모듈로 json 처리하기 (0) 2018.05.05 [Python] 한개의 요소만 갖는 튜플 데이터 타입 만들기 (0) 2018.05.05 [Python] 반복문(for, while)과 else (0) 2018.04.29 [Python] 람다 함수(Lambda) (0) 2018.04.29 [Python] 호출자에게 반환 (Return문) (0) 2018.04.28 [Python] 중첩 함수 (Nested Function) (0) 2018.04.28 [Python] 가변 매개변수를 이용한 함수 활용 (0) 2018.04.28 [Python] 주요 이스케이프 시퀀스 (0) 2018.04.27