Logo
내 게시판 만들기
파이썬

캡슐화와 명명 규칙 — _ 와 __

토순이 | 2026.04.27 06:20:09
조회 16 | 추천 0

파이썬은 자바·C#처럼 「private」 키워드가 없습니다.

대신 「관례적 명명」으로 「외부에서 직접 접근하지 말라」는 의도를 표현합니다.

두 가지 규칙이 있습니다.



「언더스코어 한 개로 시작」 (_name) — 「내부용입니다, 외부에서 직접 쓰지 마세요」라는 약속.

강제력은 없습니다 — 사용자가 obj._name으로 접근하면 동작은 하지만 「프라이버시 침해」로 약속을 어긴 셈입니다.

PEP 8 권장 관례입니다.



「언더스코어 두 개로 시작」 (__name) — 더 강한 보호.

파이썬이 자동으로 이름을 「_ClassName__name」으로 바꿉니다(name mangling).

외부에서 obj.__name으로 접근하면 AttributeError가 납니다.

다만 obj._ClassName__name으로 우회 접근은 가능 — 「강제 격리」가 아니라 「실수 방지」입니다.



name mangling의 진짜 목적은 「다중 상속에서 이름 충돌을 막는 것」입니다.

부모 A와 부모 B가 모두 __value를 가졌다면 자동으로 _A__value와 _B__value로 분리되어 충돌이 없습니다.

단순한 「숨김」이 아니라는 점이 중요합니다.



또 「언더스코어 두 개로 시작·끝」(__init__) — 매직 메서드.

「언더스코어 한 개로 끝」(class_) — 파이썬 예약어와 충돌 회피.

이 네 가지 패턴을 알면 파이썬 코드의 명명 의도를 정확히 읽을 수 있습니다.

일반적으로 「_x는 내부용으로 쓰지 마세요」, 「__x는 정말 사용 금지」 정도로 받아들이면 됩니다.




한 줄 요약


파이썬은 private 키워드 없이 명명으로 캡슐화를 표현합니다.

_name은 「내부용 약속」, __name은 「name mangling으로 격리」, __name__은 매직 메서드입니다.




더 알아볼 것


- name mangling의 자세한 동작

- 왜 파이썬은 진짜 private를 안 만들었나

- _underscore_only — 변수 무시 관례

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 11 0
70 곰돌이 26/04/27 14 0
69 구름이 26/04/27 16 0
68 부엉이 26/04/27 13 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 15 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 14 0
63 부엉이 26/04/27 17 0
62 구름이 26/04/27 13 0
61 멍뭉이 26/04/27 15 0
60 야옹이 26/04/27 14 0
59 토순이 26/04/27 16 0
58 다람쥐 26/04/27 15 0
57 햇살이 26/04/27 20 0
56 멍뭉이 26/04/27 10 0
55 구름이 26/04/27 11 0
54 다람쥐 26/04/27 14 0
53 곰돌이 26/04/27 12 0
52 햇살이 26/04/27 38 0
51 멍뭉이 26/04/27 12 0
50 곰돌이 26/04/27 39 0
49 다람쥐 26/04/27 13 0
48 너구리 26/04/27 14 0
47 구름이 26/04/27 16 0
46 야옹이 26/04/27 13 0
45 너구리 26/04/27 13 0
44 야옹이 26/04/27 14 0
43 곰돌이 26/04/27 14 0
42 구름이 26/04/27 12 0
신고하기

신고 사유를 선택해 주세요.