class A:
def __init__(self, name, courses=[]):
self.name = name
self.courses = courses
이런 클래스 A가 있다고 치자.
A라는 클래스에서 courses=[] 이라는 것을 통해 초기값을 지정해줬다.
a = A("a")
a.courses.append("파이썬")
b = A("b")
# b 인스턴스엔 아무것도 추가하지 않았음.
a와 b라는 인스턴스를 만들고 a에만 "파이썬"이라는 문자열을 넣어주었다. 그리고나서
a.courses, b.courses
이렇게 두 인스턴스의 courses를 확인하면 둘 다 '파이썬'이 들어가 있는 것이 확인된다.
그래서 이렇게 초기값을 지정하면 안되고,
class A:
def __init__(self, name, courses=None): #여기서 초기화를 하지 말고
self.name = name
if courses is None:
self.courses = [] #이런식으로 해라
else:
self.courses = courses
연동이 되는 이슈가 있으니 이렇게 밑에 내려와서 해주는 것이 바람직하다.
이렇게 했을 때는 연동되는 이슈 없음.