파이썬에서 인스턴스 변수와 클래스 변수

김재웅·2020년 12월 10일
0
class C:
    a = 10
    
    def __init__(self):
    	self.b = 20
        
if __name__=="__main__":
    c1 = C()
    c2 = C()
    
    print(c1.a, c1.b)
    print(c2.a, c2.b)
    
    c1.a += 10
    c2.b += 10
	
    print(c1.a, c1.b)
    print(c2.a, c2.b)
    print(C.a)

출력:

10 20
10 20
20 20
10 30
10

a는 클래스 변수이고 b는 인스턴스 변수이다.
클래스 변수를 읽을 때 클래스이름.변수이름으로 접근할 수도 있지만
인스턴스.변수이름으로도 접근이 가능하다.

그런데 인스턴스.변수이름=10 등으로 값을 할당하면 그 인스턴스에 같은 이름의 인스턴스 변수가 생긴다.
c1.a += 10c1.a = c1.a + 10으로 해석되는데, 여기서 앞의 c1.a는 새로운 인스턴스 변수, 뒤의 c1.a는 클래스 변수인 셈이다.

0개의 댓글