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

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

프라이빗 변수(Private Variables)는 클래스 내부에서만 접근할 수 있는 특별한 변수입니다.

이 변수는 객체의 중요한 데이터를 외부에서 직접 바꾸지 못하도록 보호하며, 앞서 배운 캡슐화를 구현하는 데 사용됩니다.

파이썬에서는 변수 이름 앞에 밑줄 2개(__)를 붙여 프라이빗 변수를 나타냅니다.

참고: 밑줄을 1개만 붙인 변수는 보호 변수(Protected 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 발생: 직접 접근 불가

위 코드에서 __private_varMyClass 클래스의 프라이빗 변수입니다.

클래스 외부에서 obj.__private_var()와 같이 __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)
# AttributeError 발생

이 예제에서 __balanceAccount 클래스의 프라이빗 변수입니다.

클래스 외부에서 __balance에 직접 접근하려 하면 AttributeError 오류가 발생합니다.

대신 클래스에서 제공하는 depositget_balance 메서드를 통해 이 변수의 값을 안전하게 바꾸거나 확인할 수 있습니다.

다음 내용이 궁금하다면?

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