본문으로 건너뛰기

클래스 프라이빗(Private) 변수 사용법

클래스 프라이빗(Private) 변수 사용법

클래스의 프라이빗 변수(Private Variables)는 객체의 캡슐화와 정보 은닉을 위해 사용하는 중요한 개념입니다.

프라이빗 변수는 클래스 내부에서만 접근 가능한 변수로, 클래스 외부에서 직접적인 접근이 제한됩니다.

파이썬에서는 변수 이름 앞에 더블 언더스코어(__)를 붙여 프라이빗 변수를 나타냅니다.

프라이빗 변수 사용 예시
class MyClass:
def __init__(self):
self.__private_var = 10 # 프라이빗 변수

def get_private_var(self): # 프라이빗 변수 반환 메소드
return self.__private_var

obj = MyClass()

print(obj.get_private_var()) # 10 출력

# print(obj.__private_var) # 인스턴스로 직접 접근하면 AttributeError 발생

프라이빗 변수의 특징

  • 캡슐화 및 정보 은닉: 클래스 내부의 구현 세부 사항을 숨기고, 외부로부터 데이터를 보호합니다.

  • 상호작용 간소화: 사용자가 클래스의 내부 구현을 알 필요 없이, 공개된 메소드를 통해 상호작용하도록 합니다.

프라이빗 변수 사용 예시
class Account:
def __init__(self, balance):
self.__balance = balance # 프라이빗 변수

def deposit(self, amount):
if amount > 0:
self.__balance += amount
return f"입금 완료: 잔액 {self.__balance}원"
return "입금 금액이 유효하지 않습니다."

def get_balance(self):
return f"현재 잔액: {self.__balance}원"

# 클래스 사용 예시
account = Account(10000)

print(account.deposit(5000)) # '입금 완료: 잔액 15000원' 출력

print(account.get_balance()) # '현재 잔액: 15000원' 출력


# 프라이빗 변수 직접 접근 시도 (오류 발생)
# print(account.__balance)

이 예제에서 __balance는 Account 클래스의 프라이빗 변수입니다. 클래스 외부에서 __balance에 직접 접근하려 하면 오류가 발생합니다.

대신 depositget_balance 공개 메소드를 통해 __balance 변수의 값을 안전하게 활용할 수 있습니다.