본문으로 건너뛰기
실습하기

캡슐화로 속성과 메소드를 하나로 묶는 방법

캡슐화(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 변수로 설정되어 외부에서 직접 접근할 수 없습니다.

대신 depositget_balance 메서드를 통해 이 변수를 안전하게 조작하거나 확인할 수 있습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!