클래스 변수
Class로 생성한 객체를 말하는 클래스 변수가 아니라, Class를 정의하면서 생성한 변수를 클래스 변수를 말함
클래스 변수는 클래스의 모든 인스턴스에게 공유되는 내용
그래서 클래스 변수는 특정 인스턴스에 종속되지 않음
클래스 변수는 일반적으로 해당 클래스의 모든 인스턴스에서 공통적으로 사용해야 하는 값을 저장하는 데에 사용함
인스턴스 변수
특정 인스턴스 내에서만 사용하며, 각 인스턴스마다 고유한 값을 가짐
인스턴스 변수는 '__init__' 메소드(생성자) 내에서 'self' 키워드를 사용하여 정의되고 초기화됨
인스턴스 변수는 각 객체의 고유한 상태를 유지하는 데 사용
위 구조로 클래스 변수, 인스턴스를 분리함으로써 코드의 유지보수와 데이터 관리가 용이해짐
객체 지향 프로그래밍의 강력한 기능이기도 함
class Employee:
raise_amount = 1.04 # 클래스 변수 (모든 인스턴스에서 공유)
def __init__(self, name, last_year_pay, current_pay):
self.name = naem # 인스턴스
self.last_year_pay = last_year_pay # 인스턴스
self.current_pay = current_pay # 인스턴스
def apply_raise(self):
self.last_year_pay = int(self.last_year_pay * self.raise_amount) # 클래스 변수 사용
def apply_raise_will(self):
self.current_pay = int(self.current_pay * self.raise_amount) # 클래스 변수 사용
# 인스턴스 생성
emp_1 = Employee('John', 40000, 50000)
emp_2 = Employee('Jane', 50000, 60000)
# 각 인스턴스의 급여 인상 적용
emp_1.apply_raise()
emp_2.apply_raise()
# 각 인스턴스의 급여 인상 적용
emp_1.apply_raise_will()
emp_2.apply_raise_will()
print(emp_1.last_year_pay)
print(emp_2.last_year_pay)