베이직 파이썬({Python) - 객체변수(Instance variable) vs 클래스변수(Class variable)

안녕하세요 jay입니다.
지난 시간 self에 이어 
링크 : https://classicismist.blogspot.com/2018/09/python-self.html
이번 시간에는 객체 변수와 클래스 변수에 대해 알아보도록 하겠습니다.



객체 변수(Instance variable)

객체 변수멤버 변수라고도 합니다.
객체 변수는 객체의 고유한 값을 저장할 수 있는 공간입니다.
객체 변수는 다른 객체들에 의해 영향받지 않고
독립적으로 그 값을 유지합니다.

class Country:
    
    def __init__(self,n,p):
        self.name = n # 인스턴스 변수
        self.population = p # 인스턴스 변수
        
    def show(self):
        print(self.name)
        print(self.population)
        
a = Country("대한민국",500000000) 
b = Country("미국", 330000000) # a와 b는 서로 다른 객체이다. 객체 변수는 이에 영향받지 않는다.
a.show() # 대한민국
         # 500000000 출력
b.show() # 미국
         # 330000000 출력

클래스 변수 (class variable)

클래스 변수는 클래스 내에 변수를 선언하여 생성한다.
클래스 변수는 객체 변수와 달리 클래스에 의해 생성된 모든 객체에 공유된다는 특징을
가지고있다. (독립적이지 않다)


class Country:
    counting = 0 # 클래스 변수
    
    def __init__(self,name,population):
        self.name = name # 객체 변수
        self.population = population # 객체 변수
        Country.counting += 1 # 생성자가 실행될 때마다 클래스 변수 counting이 1씩 증가
        
    def show(self):
        print(self.name) 
        print(self.population) 
        
a = Country("대한민국",50000000)
b = Country("미국", 330000000)

print(a.name) # 객체 a의 객체 변수 name 출력 = 대한민국
print(b.name) # 객체 b의 객체 변수 name 출력 = 미국
print(a.counting) # 클래스 변수 출력 = 2
print(b.counting) # 클래스 변수 출력 = 2

위의 코드를 보면 
a, b라는 객체를 생성했을 때
생성자가 실행되면서 클래스 변수 counting이 1이 각각 증가해서 
클래스 변수 counting을 출력하면 2가 된다는 것을 알 수 있다.

댓글