Life Work
[파이썬] 인스턴스 변수 vs 클래스 변수
white stones
2024. 6. 28. 15:00
파이썬에서 클래스 변수와 인스턴스 변수는 각각 클래스와 인스턴스에 속하는 변수로, 그 사용 목적과 접근 방법에서 차이가 있습니다. 아래는 두 변수의 주요 차이점입니다.
1. 클래스 변수 (Class Variable)
- 선언 위치: 클래스 정의 내부, 메서드 외부
- 소속: 클래스 자체에 속함
- 공유 범위: 클래스의 모든 인스턴스가 공유
- 생명 주기: 프로그램이 종료될 때까지 유지
- 접근 방법: 클래스명 또는 인스턴스를 통해 접근 가능
- 용도: 클래스 전체에서 공통으로 사용되는 데이터를 저장
class MyClass:
class_variable = 0 # 클래스 변수
def __init__(self, value):
self.instance_variable = value # 인스턴스 변수
MyClass.class_variable += 1
# 클래스 변수에 접근
print(MyClass.class_variable) # 0 출력
# 인스턴스 생성
obj1 = MyClass(10)
obj2 = MyClass(20)
# 클래스 변수와 인스턴스 변수에 접근
print(obj1.instance_variable) # 10 출력
print(obj2.instance_variable) # 20 출력
print(MyClass.class_variable) # 2 출력 (인스턴스가 두 개 생성되었기 때문)
2. 인스턴스 변수 (Instance Variable)
- 선언 위치: 클래스 메서드 내부, 주로 __init__ 메서드 내
- 소속: 각 인스턴스에 속함
- 공유 범위: 각 인스턴스마다 별도로 존재
- 생명 주기: 인스턴스가 존재하는 동안 유지
- 접근 방법: 인스턴스를 통해 접근 가능
- 용도: 각 인스턴스별로 고유한 데이터를 저장
class MyClass:
class_variable = 0 # 클래스 변수
def __init__(self, value):
self.instance_variable = value # 인스턴스 변수
# 인스턴스 생성
obj1 = MyClass(10)
obj2 = MyClass(20)
# 인스턴스 변수에 접근
print(obj1.instance_variable) # 10 출력
print(obj2.instance_variable) # 20 출력
# 클래스 변수에 접근
print(MyClass.class_variable) # 0 출력 (클래스 변수는 변경되지 않음)
3. 주요 차이점 요약
- 소속:
- 클래스 변수: 클래스 자체에 속함
- 인스턴스 변수: 각 인스턴스에 속함
- 공유 범위:
- 클래스 변수: 클래스의 모든 인스턴스가 공유
- 인스턴스 변수: 각 인스턴스마다 별도로 존재
- 선언 위치:
- 클래스 변수: 클래스 정의 내부, 메서드 외부
- 인스턴스 변수: 클래스 메서드 내부, 주로 __init__ 메서드 내
- 접근 방법:
- 클래스 변수: 클래스명 또는 인스턴스를 통해 접근 가능
- 인스턴스 변수: 인스턴스를 통해 접근 가능
- 생명 주기:
- 클래스 변수: 프로그램이 종료될 때까지 유지
- 인스턴스 변수: 인스턴스가 존재하는 동안 유지