클래스 프라이빗(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_var
는 MyClass
클래스의 프라이빗 변수입니다.
클래스 외부에서 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 발생
이 예제에서 __balance
는 Account
클래스의 프라이빗 변수입니다.
클래스 외부에서 __balance
에 직접 접근하려 하면 AttributeError
오류가 발생합니다.
대신 클래스에서 제공하는 deposit
과 get_balance
메서드를 통해 이 변수의 값을 안전하게 바꾸거나 확인할 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!