Python/Python Programming
[Python] 객체 지향 프로그래밍 - __init__() 메소드를 정의하는 이유
Pydole
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를 각 객체마다 고유한 인스턴스를 사용하므로, 정상적으로 출력된다.
|