데브허브 | DEVHUB | Name mangling is crazy in PythonName mangling is crazy in Python
- 파이썬의 이름 망글링은
__로 시작하는 속성이나 메서드 이름을 자동으로 _클래스명__속성명 형태로 변경하여 충돌을 방지하는 메커니즘입니다. 🐍
- 이는 종종 외부에서 직접 접근하기 어렵게 만들어 프라이빗 속성처럼 보이게 하는 데 사용됩니다. 🔒
- 이름이 변경되었더라도
_클래스명__속성명 구문을 사용하여 여전히 접근할 수 있으므로, 진정한 의미의 프라이빗은 아닙니다. 🔑
- 이름 망글링의 주된 목적은 상속 관계에서 부모 클래스와 자식 클래스 간에 동일한 이름의 속성이 서로 덮어쓰는 것을 방지하는 것입니다. 🛡️
- 망글링을 사용하지 않으면, 자식 클래스에서 부모 클래스와 같은 이름의 속성을 정의할 경우 부모의 속성이 자식의 속성으로 덮어씌워져 예상치 못한 결과(예: 두 ID가 동일하게 출력)를 초래합니다. 💥
- 부모 클래스에서
__를 사용하여 속성 이름을 망글링하면, 자식 클래스에서 동일한 이름의 속성을 정의하더라도 서로 다른 별개의 속성으로 유지되어 충돌 없이 공존할 수 있습니다. ✅
- 파이썬에서는 진정한 의미의 프라이빗 개념이 없으며, 이름 망글링은 개발자 간의 약속이자 이름 충돌 방지를 위한 도구임을 다시 한번 강조합니다. 🤝