프로그래밍언어/파이썬[초급]

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

about_IT 2025. 5. 17. 05:16
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