Programming/Python
[Python] OOP-3 . instance variable vs class variable
midnightcoder
2023. 1. 21. 06:47
1) Instance variable (인스턴스 변수)
class Car :
name = ""
speed = 0
위 class에 있는 변수 name과 speed는 인스턴스 변수이다.
인스턴스 변수는 인스턴스를 생성해야 사용할 수 있는 변수이다. (즉 아직 실제 공간이 할당되지 않음)
이제 이 설계도 (class)를 이요해 메인 코드 부분에서 자동차 (instance)를 만든다.
car1 = Car()
car2 = Car()
이제 car1과 car2 는 실제 존재한느 자동차이며, 이 안에는 color와 speed의 메모리에 공간이 만들어 졌다.
** 결론 : 인스턴스 변수는 메모리의 독립적인 공간을 가지고 있으며, 반드시 인스턴스를 생성해야지 사용할 수 있다.
2) class variable (클래스 변수)
- 클래스 변수는 클래스가 로딩될 때 이미 메모리 공간에 할당된 변수를 의미한다.
그래서 클래스 변수는 인스턴스에 별도의 공간을 할당하지 않고, 여러 인스턴스가 클래스 변수를 공유한다.
클래스변수에 접근할 때는 클래스명.클래스변수명 의 방식으로 접근해야한다.
또다른 예로, 포커 카드를 생각할 수 있는데,
52장의 카드에서, 카드의 폭과 넓이는 공통 변수인 class 변수가 되야한다.
예제 코드
class Car :
# Car 클래스의 필드
color = "" # 인스턴스 변수
speed = 0 # 인스턴스 변수
count = 0 # 클래스 변수는 반드시 필드로 선언해줘야 한다.(중요)
# 기본 생성자
def __init__(self):
self.color = "노랑"
self.speed = 0
Car.count += 1
위의 코드에서
처음에 변수를 선언하는 시점에서는 instance 변수인지 class 변수인지 구분할 수 가 없지만,
생성자에 마지막 line을 보면 Car.count 를 통해서, class 변수임을 알 수 있다. (인스턴스변수는 self. 를 붙임)
3) 요약
출처 : 파이썬(Python) 기초부터 실무까지 part.4