[python] 클래스 변수와 인스턴스 변수의 차이

클래스 변수와 인스턴스 변수는 파이썬에서 객체지향 프로그래밍을 할 때 중요한 개념입니다. 이러한 변수들의 차이점을 이해하면 객체지향 프로그래밍의 기초를 이해하는 데 도움이 될 것입니다. 이번 글에서는 클래스 변수와 인스턴스 변수의 차이점을 알아보고, 각각의 사용 예시를 살펴보겠습니다.

클래스 변수

클래스 변수는 해당 클래스의 모든 인스턴스가 공유하는 변수 입니다. 즉, 클래스 변수는 해당 클래스로 생성된 모든 인스턴스에서 동일하게 사용됩니다. 클래스 변수는 주로 클래스 내부에서 정의되며, 인스턴스들이 공유해야 하는 데이터나 상태를 저장하는 데 사용됩니다.

다음은 클래스 변수를 사용한 간단한 예시 코드입니다.

class Car:
    number_of_cars = 0  # 클래스 변수

    def __init__(self, model):
        self.model = model  # 인스턴스 변수
        Car.number_of_cars += 1

car1 = Car("Tesla")
car2 = Car("BMW")

print(Car.number_of_cars)  # 출력: 2

위 예시 코드에서 number_of_carsCar 클래스의 클래스 변수로, 이 변수는 Car 클래스로 생성된 모든 인스턴스에서 공유됩니다.

인스턴스 변수

인스턴스 변수는 각각의 인스턴스마다 별도로 유지되는 변수 입니다. 각 인스턴스마다 고유한 데이터나 상태를 저장하는 데 사용됩니다. 인스턴스 변수는 해당 클래스의 인스턴스가 생성될 때 __init__ 메서드 내부에서 정의됩니다.

다음은 인스턴스 변수를 사용한 예시 코드입니다.

class Car:
    def __init__(self, model):
        self.model = model  # 인스턴스 변수
        self.is_running = False  # 인스턴스 변수

car1 = Car("Tesla")
car2 = Car("BMW")

print(car1.model)     # 출력: Tesla
print(car2.model)     # 출력: BMW
print(car1.is_running)  # 출력: False
print(car2.is_running)  # 출력: False

위 예시 코드에서 modelis_running은 각각 Car 클래스의 인스턴스 변수로, 각 인스턴스마다 별도로 유지됩니다.

결론

클래스 변수와 인스턴스 변수는 각각 클래스와 인스턴스에 속하며, 서로 다른 용도로 사용됩니다. 클래스 변수는 클래스와 그 클래스로 생성된 모든 인스턴스 간에 공유되는 변수이고, 인스턴스 변수는 각 인스턴스에 고유한 데이터를 유지하는 변수입니다. 올바르게 클래스 변수와 인스턴스 변수를 활용하면 객체지향 프로그래밍에서 보다 견고하고 유연한 코드를 작성할 수 있습니다.

이제 클래스 변수와 인스턴스 변수의 차이에 대해 좀 더 이해하셨을 것입니다. 다음에 다시 객체지향 프로그래밍을 다룰 때 이러한 변수들을 잘 활용해보세요!