본문 바로가기
프로그래밍언어/파이썬[초급]

[파이썬][초급] Chapter44. 캡슐화와 접근 제어자

by about_IT 2025. 5. 17.
728x90

캡슐화는 객체의 내부 상태를 외부에서 직접 접근하지 못하도록 하고, 메서드를 통해서만 접근하도록 만드는 객체지향 프로그래밍의 핵심 원칙입니다. 파이썬은 명시적인 접근 제어자를 제공하지 않지만, 이름 규칙을 통해 이를 구현할 수 있습니다.

● 캡슐화란?

캡슐화는 객체 내부의 변수와 메서드를 숨기고, 필요한 정보만 외부에 공개하는 원칙입니다. 이를 통해 데이터 보호와 유지보수를 용이하게 합니다.

● 접근 제어 규칙

파이썬에서는 변수 이름 앞에 밑줄을 붙여 접근 수준을 암시합니다.

  • public: 일반 변수 (제한 없음)
  • _protected: 내부용 변수 (관례상 외부 사용 자제)
  • __private: 이름 맹글링(name mangling)을 통한 은닉
class User:
    def __init__(self):
        self.name = "Tom"          # public
        self._email = "a@b.com"    # protected
        self.__password = "1234"   # private

● 이름 맹글링

__변수명 형태로 정의된 변수는 내부적으로 _클래스명__변수명으로 바뀝니다.

u = User()
print(u.name)
print(u._email)
# print(u.__password)         # 오류
print(u._User__password)      # 우회 접근 가능

● getter와 setter

private 변수를 안전하게 읽거나 수정할 수 있도록 메서드를 제공합니다.

class BankAccount:
    def __init__(self):
        self.__balance = 0

    def get_balance(self):
        return self.__balance

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

● property 데코레이터

@property를 사용하면 메서드를 변수처럼 접근할 수 있어 가독성이 향상됩니다.

class Product:
    def __init__(self):
        self.__price = 0

    @property
    def price(self):
        return self.__price

    @price.setter
    def price(self, value):
        if value > 0:
            self.__price = value

● 마무리

이번 장에서는 캡슐화의 개념, 접근 제어자 역할, getter/setter, @property 사용법 등을 익혔습니다. 객체의 내부 상태를 보호하고 안전하게 접근 제어하는 것은 안정적인 프로그램 구현에 필수적인 요소입니다. 다음 장에서는 클래스의 특수 메서드에 대해 살펴보겠습니다.

728x90