반응형

🛡️ 파이썬 완벽 가이드: 내 데이터는 내가 지킨다! (캡슐화와 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 변수로 만들자!"
반응형
'두두 IT > 파이썬 퀴즈' 카테고리의 다른 글
| [W3S 오답노트] Python File Handling / Python Open File (0) | 2026.05.06 |
|---|---|
| [W3S 오답노트] Python Inner Class (0) | 2026.05.06 |
| [W3S 오답노트] Python Inheritance (0) | 2026.05.06 |
| [W3S 오답노트] Python Self Parameter (0) | 2026.05.06 |
| [W3S 오답노트] Python __init__ Method (0) | 2026.05.06 |