본문 바로가기
ETC

[python] 클래스 변수와 __dict__

by 안주형 2021. 12. 14.

파이썬에서 __dict__ 속성을 이용하면 클래스의 인스턴스 변수와 값에 쉽게 접근할 수 있다.

class publicCircle:
    def __init__(self, name, radius):
        self.name = name
        self.radius  = radius

c1 = publicCircle('private', 1)

print("c1의 속성들: " , c1.__dict__)
# __dict__[key] 형식으로 value값만 따로 얻을 수도 있다.
print(c1.__dict__['name'])
print(c1.__dict__['radius'])

 

위 코드의 결과는 아래와 같다.

c1의 속성들:  {'name': 'private', 'radius': 1}
private
1

 

또한 __dict__속성을 사용하면 _(언더스코어)로 시작하는 이름을 가진 인스턴스 변수에도 쉽게 접근할 수 있는데, private 한 클래스 인스턴스에도 접근을 할 수 있게 된다.

class privateCircle:
    def __init__(self, name, radius):
        self.__name = name
        self.__radius  = radius

c2 = privateCircle('private', 2)

print("c2의 속성들: ", c2.__dict__)
# private한 인스턴스값의 value값만 따로 얻고 싶을 경우 아래와 같은 형식으로 얻어 올 수 있다.
print(c2.__dict__['_privateCircle__name'])
print(c2.__dict__['_privateCircle__radius'])

 

위 코드의 결과는 아래와 같다.

c2의 속성들:  {'_privateCircle__name': 'private', '_privateCircle__radius': 2}
private
2

댓글