About Python – “클래스(4) – 객체 변수 vs 클래스 변수”

About Python – “클래스(4) – 객체 변수 vs 클래스 변수”

1월 13, 2022

파이썬의 객체 변수

객체 변수는 객체에 생성되는 객체만의 변수를 의미합니다.

class Example:
    def __init__(self, hello):
        self.hello = hello

x = Example(1)
y = Example(10)
print(x.hello)
x.hello = 100


print(x.hello)
print(y.hello)


# 1
# 100
# 10

위는 객체 변수의 예시입니다. x = Example(1) 이라는 코드로 x 라는 객체가 만들어지고, 그것의 객체변수 x.a1이라는 값이 대입이 됩니다.

아랫쪽에서도 동일한 방식으로 y라는 객체를 만들고 그것의 객체변수에 10이라는 값이 대입되었네요. 밑의 줄에서 x.hello = 100 이라는 코드로 객체 변수에 새로운 값을 바인딩해 주고, 각각의 객체변수 값을 다시 찍어 봅니다. x.a는 성공적으로 100이 나오는 반면, y.a의 값은 변함이 없습니다.

예전에 클래스를 설명할 때에, 클래스는 종이학을 만들게 해 주기 위한 종이접기 책과 같은 것이라고 비유를 한 적이 있습니다. 이번엔 x라는 종이학과 y라는 종이학(객체)을 만들었네요. 종이학을 두 개 접고 나서 그것 중 하나를 구겨도 나머지 하나는 구겨지지 않습니다. 마찬가지로, 객체변수는 다른 객체변수가 어떻게 되던지 상관하지 않고 독립적인 값을 유지합니다.

파이썬의 클래스 변수

class Example:
    b = 100
    def __init__(self, hello):
        self.hello = hello

x = Example(1)
y = Example(2)

print(Example.b)
print(x.b)
print(y.b)

Example.b = 1203

print(x.b)
print(y.b)


# 100
# 100
# 100
# 1203
# 1203

위의 클래스를 살펴보겠습니다. 클래스가 정의되고 그 안에 b = 100이라는 코드로 클래스 변수를 정의했습니다. print(Example.b) 처럼 클래스이름.클래스변수 를 통하여 클래스 변수의 값을 출력하면 당연히 100이 나옵니다.

역시나 x, y 모두 같은 클래스로부터 만들어진 객체이기 때문에 b를 출력하면 같은 값이 나옵니다.

이번에는, Example.b = 1203 이라는 코드로 클래스 변수의 값을 바꾸고 각각 객체들의 b값을 출력해 보겠습니다. 보시는 바와 같이 모두 1203으로 변경된 것을 볼 수 있습니다. 클래스 변수는 클래스로 만들어진 객체들에 공유됩니다. 종이접기 책의 내용이 바뀌면( Example.b = 1203 ) 그것으로 만들어진 종이학 (x, y) 의 생김새도 변하는 것과 비슷합니다.

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.