본문 바로가기
Computer Science/Python

[파이썬] 클래스 변수 vs 인스턴스 변수 차이

by sohyunwriter 2021. 1. 12.

*파이썬 클래스 변수 vs 인스턴스 변수 차이

 

면접에서 받은 질문이어서 정리해둔다.

다음과 같은 차이가 있다.

 

  클래스 변수 인스턴스 변수
무엇인가? 클래스 내부에 선언된 변수 self가 붙어 있는 변수. 클래스의 인스턴스가 생성될 때 생성
변수의 존재 위치 class의 namespace에 위치 instance의 namespace의 위치
언제 사용? 인스턴스 간에 서로 공유해야 하는 값. 클래스 변수는 모든 인스턴스에 공유된다. (e.g. 현재 은행에 총 개설된 계좌의 개수) 인스턴스 간 고유한 값. 다른 인스턴스에 공유되면 안 되는 값. (e.g. 이름)

 

class Account:
    num_accounts = 0
    def __init__(self, name):
        self.name = name
        Account.num_accounts += 1
    def __del__(self):
        Account.num_accounts -= 1

print("(클래스 변수) 객체 생성 전: ", Account.num_accounts)
kim = Account("kim")
lee = Account("lee")

print("(인스턴스 변수) kim 객체의 이름: ", kim.name)
print("(인스턴스 변수) lee 객체의 이름: ", lee.name)
print("(클래스 변수) kim 객체: ", kim.num_accounts)
print("(클래스 변수) 클래스: " ,Account.num_accounts)

 

 

위 코드 동작 방식

 

클래스 변수는 위와 같이 각각 인스턴스에 공통으로 공유되는 변수이고, 

인스턴스 변수는 다른 인스턴스에 공유되지 않는다.

 

 


-참고문헌

클래스 변수와 인스턴스 변수 차이 위키독스