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
'프로그래밍언어 > 파이썬[초급]' 카테고리의 다른 글
[파이썬][초급] Chapter46. 객체 직렬화와 파일 저장 (0) | 2025.05.17 |
---|---|
[파이썬][초급] Chapter45. 클래스의 특수 메서드 (0) | 2025.05.17 |
[파이썬][초급] Chapter43. 상속과 오버라이딩 (0) | 2025.05.17 |
[파이썬][초급] Chapter42. 객체지향 프로그래밍 기초 (0) | 2025.05.17 |
[파이썬][초급] Chapter41. 외부 라이브러리 설치와 활용 (0) | 2025.05.17 |