본문 바로가기

카테고리 없음

[Python] class 초기값 지정할 때 주의할 점.

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

연동이 되는 이슈가 있으니 이렇게 밑에 내려와서 해주는 것이 바람직하다. 

 

이렇게 했을 때는 연동되는 이슈 없음.