클래스 프라이빗(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
메서드를 통해 이 변수의 값을 안전하게 바꾸거나 확인할 수 있습니다.
프라이빗(Private) 변수는 클래스 외부에서 직접 접근할 수 있다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과