본문 바로가기
두두 IT/파이썬 퀴즈

[W3S 오답노트] Python Encapsulation __

by DoDo's 2026. 5. 6.
반응형

Use a double underscore prefix: __property

 

 

🛡️ 파이썬 완벽 가이드: 내 데이터는 내가 지킨다! (캡슐화와 Private 변수)

만약 아주 중요한 관광 공공 데이터를 수집하는 파이썬 프로그램을 설계했다고 가정해 보겠습니다. 이 프로그램 안에는 데이터를 합법적으로 긁어오기 위해 발급받은 소중한 '비밀키(API Key)'가 들어있습니다.

누군가 밖에서 마침표(.)를 찍고 들어와서 이 비밀키를 마음대로 지워버리거나 엉뚱한 값으로 바꿔버리면 프로그램이 바로 고장 나겠죠? 이렇게 외부에서 함부로 객체 안의 중요 데이터에 접근하지 못하게 꽁꽁 숨기는 기술을 '캡슐화'라고 부릅니다.

📖 1. 비밀을 지키는 두 가지 암호 (언더스코어 _)

파이썬에서는 변수 이름 앞에 밑줄(언더스코어, _)을 붙여서 접근 권한을 조절합니다. (보기 3번에 있던 private 이라는 단어는 자바(Java) 같은 다른 언어에서 쓰는 방식이고, 파이썬에는 없는 문법입니다!)

  • _variable (밑줄 1개 / Protected):
    • "이건 프로그램 내부에서만 쓰는 변수니까, 되도록 밖에서 건드리지 말아 줘!" 라는 뜻입니다.
    • 하지만 개발자들끼리의 '신사협정'일 뿐, 밖에서 강제로 값을 부르거나 바꾸려고 하면 바꿀 수는 있습니다.
  • __variable (밑줄 2개 / Private) - 오늘의 정답!:
    • "이건 절대 건드리면 안 되는 특급 비밀이야! 외부에서 아예 안 보이게 숨겨버릴 거야!" 라는 뜻입니다.
    • 파이썬이 이름표 자체를 복잡하게 꼬아버려서(Name Mangling), 밖에서 마침표를 찍어도 "그런 변수 없는데요?" 라며 아예 없는 취급을 해버립니다.

💻 2. 코드로 보는 완벽한 철벽 방어!

Python
 
class TourismDataCrawler:
  def __init__(self, key):
    # [1] 밑줄 두 개(__)를 붙여서 외부에서 절대 접근 불가능한 Private 변수로 만듭니다!
    self.__api_key = key

  # [2] 비밀키를 확인하려면 오직 이 함수(메서드)를 통해서만 안전하게 볼 수 있습니다.
  def show_key(self):
    return self.__api_key

# 프로그램 실행!
crawler = TourismDataCrawler("SECRET_12345")

# ❌ 외부에서 마침표(.)를 찍고 강제로 비밀키를 훔쳐보려고 하면?
# print(crawler.__api_key)
# 결과: AttributeError (그런 변수 없다고 에러를 뿜어냅니다! 철벽 방어 성공!)

# ⭕ 우리가 정해둔 안전한 통로(메서드)를 이용하면 정상적으로 확인 가능합니다.
print(crawler.show_key())
# 결과: SECRET_12345

📝 3. 핵심 한 줄 총정리 요약

"객체 안의 중요한 데이터를 외부에서 함부로 보거나 수정하지 못하게 꽁꽁 숨기고 싶다면, 변수 이름 맨 앞에 밑줄 두 개(__)를 붙여서 Private 변수로 만들자!"

반응형