Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 객체 지향 프로그래밍에서 데이터 은닉(Data Hiding)이란? 개념과 구현 방법

데이터 은닉(Data Hiding)이란?

파이썬 공식 문서에 따르면, 데이터 은닉(data hiding)은 클라이언트(사용자)를 객체 구현의 일부로부터 격리하는 것을 의미합니다. 모듈 내부의 일부 객체는 해당 모듈 안에서만 사용되며, 외부 사용자에게는 보이지 않고 접근할 수도 없습니다. 이는 모듈 간의 불필요한 의존성을 피하면서 동시에 보안성을 확보하는 방법입니다.

애플리케이션의 사용자는 프로그램을 어떻게 사용하는지만 알면 되며, 내부가 어떻게 동작하는지까지 알 필요가 없습니다. 실제로 알 필요조차 없습니다. 이처럼 특정 데이터나 기능에 대한 외부 사용자의 접근을 차단하는 기법을 데이터 은닉이라고 부릅니다.

파이썬에서 데이터 은닉을 구현하는 방법

파이썬은 C++나 Java처럼 별도의 private 키워드를 제공하지 않지만, 명명 규칙(convention)과 네임 맹글링(name mangling)을 통해 데이터 은닉을 구현할 수 있습니다.

  • 단일 밑줄(_변수): 속성이나 메서드 앞에 붙이면 "내부 전용"이라는 신호로, 외부에서 직접 접근하지 말아야 함을 나타냅니다. 다만 이는 관례일 뿐 언어 차원의 강제는 아닙니다.
  • 이중 밑줄(__변수): 네임 맹글링이 적용되어 클래스 외부에서 속성 이름이 자동으로 변경되므로 직접 접근이 사실상 차단됩니다.
class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # 비공개 속성

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount

    def get_balance(self):
        return self.__balance

account = BankAccount(10000)
# print(account.__balance)  # AttributeError 발생
print(account.get_balance())  # 공개 메서드를 통해서만 접근

데이터 은닉의 주요 장점

  • 보안 강화: 중요한 내부 데이터가 외부에서 임의로 조회되거나 변경되는 것을 방지합니다.
  • 낮은 결합도: 내부 구현이 변경되더라도 외부 코드에 영향을 주지 않아 의존성이 줄어듭니다.
  • 유지보수 용이: 구현 세부 사항을 자유롭게 리팩토링할 수 있습니다.
  • 인터페이스 단순화: 사용자에게 필요한 기능만 노출하여 학습 곡선을 낮춥니다.

정리

데이터 은닉은 캡슐화(encapsulation)의 핵심 요소로, 객체의 내부 상태를 보호하고 외부에는 안정적인 인터페이스만 제공합니다. 이를 통해 개발자는 더 안전하고, 결합도가 낮으며, 유지보수하기 쉬운 파이썬 코드를 작성할 수 있습니다.