포스트

파이썬에서의 프라이빗 변수와 클래스

프라이빗 변수가 파이썬에 존재하는가?

프라이빗(private) 변수에 대한 개념은 파이썬에서 완전히 없는 것은 아닙니다. 다만, 다른 프로그래밍 언어와 비교했을 때, 파이썬은 프라이빗 변수에 대해 명시적인 제한을 두지 않습니다. 예를 들어, Java에서는 private 키워드를 사용하여 클래스 외부에서 변수에 접근할 수 없게 하는 반면, 파이썬은 이러한 제한을 두지 않습니다.

언더스코어의 의미

파이썬에서는 변수 이름 앞에 밑줄(언더스코어, _)을 하나 또는 두 개 붙여 변수의 “프라이빗성”을 표시하기도 합니다. 변수 이름 앞에 하나의 언더스코어가 붙으면, 해당 변수는 프라이빗으로 간주되어 외부에서 직접적인 접근을 피하도록 권장됩니다. 두 개의 언더스코어를 붙이면, 이름 장식(name mangling)이라는 메커니즘을 통해 변수 이름이 변경되어 외부 접근이 어렵게 됩니다. 이름 장식은 변수 이름 앞에 클래스 이름과 언더스코어를 추가하는 것을 말합니다.

예시 코드와 설명

다음은 파이썬 클래스에서 언더스코어를 사용한 예시입니다.

1
2
3
4
5
class MyClass:
    def __init__(self):
        self.public_var = "I am public!"
        self._private_var = "I am private!"
        self.__really_private_var = "I am really private!"
  • public_var: 외부에서 자유롭게 접근 가능한 변수입니다.
  • _private_var: 외부에서 접근을 피해야 하는 변수로 권장됩니다.
  • __really_private_var: 외부에서 접근하기 어렵게 이름이 변경됩니다. 예를 들어, object._MyClass__really_private_var와 같이 접근해야 합니다.

여기서 주의할 점은 이러한 규칙은 “권장사항”에 불과하다는 것입니다. 즉, 실제로는 접근이 가능하다는 것을 의미합니다. 따라서 파이썬에서 완벽한 프라이빗 변수는 존재하지 않지만, 언더스코어를 통한 명명 규칙을 따르는 것이 일반적입니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.