캡슐화로 속성과 메소드를 하나로 묶는 방법
캡슐화(Encapsulation)
는 객체의 데이터(속성)와 데이터를 처리하는 메서드를 하나로 묶는 것을 말합니다.
이를 통해 객체 내부의 세부 구현을 숨기고, 외부의 잘못된 접근으로부터 데이터를 보호할 수 있습니다.
파이썬에서는 캡슐화를 구현하기 위해 속성 이름 앞에 __
를 붙여서 private 속성
으로 만들 수 있습니다.
캡슐화 예시
class ClassName:
# 생성자
def __init__(self):
# private 속성
self.__private_attr = 0
위 코드에서 __private_attr
는 private 속성으로, 클래스 외부에서 직접 접근할 수 없습니다.
private 속성을 정의할 때는 밑줄(_
)을 2개 사용하는 것이 관례입니다.
캡슐화의 역할
객체 지향 프로그래밍에서 캡슐화는 다음과 같은 역할을 합니다.
-
인터페이스 제공
: 인터페이스(Interface)는 서로 다른 시스템이나 객체 간의 상호 작용을 위한 접점을 뜻합니다. 캡슐화를 통해 객체 내부가 어떻게 동작하는지 알 필요 없이, 제공된 메서드를 통해 객체와 상호작용할 수 있습니다. -
데이터 보호
: 객체의 중요한 데이터를 외부의 잘못된 접근으로부터 안전하게 보호합니다.
캡슐화 사용 예시
아래 코드 예시는 은행 계좌를 표현하는 Account
클래스를 정의하고, 캡슐화를 통해 계좌의 잔액을 안전하게 관리합니다.
캡슐화 예시
class Account:
def __init__(self, balance):
# private 속성
self.__balance = balance
# 입금 메서드
def deposit(self, amount):
if amount > 0:
self.__balance += amount
return "입금 금액이 유효하지 않습니다."
# 잔액 확인 메서드
def get_balance(self):
return f"현재 잔액: {self.__balance}원"
# 계좌 생성, 초기 잔액 10000원
account = Account(10000)
# 5000원 입금
account.deposit(5000)
# 잔액 확인
print(account.get_balance())
이 예제에서 __balance
는 private 변수로 설정되어 외부에서 직접 접근할 수 없습니다.
대신 deposit
과 get_balance
메서드를 통해 이 변수를 안전하게 조작하거나 확인할 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!