728x90
반응형
private 멤버변수 : 클래스 내부의 멤버 변수 중 숨기고 싶은 변수
private 멤버변수의 특징
- 클래스의 내부 변수는 일반적으로 public 속성을 갖기 때문에 외부에서 마음대로 접근하거나 변경 가능
- 하지만, private 멤버 변수는 그렇지 않음
cf. '외부'란 main 함수 혹은 객체를 통한 접근 등을 통틀어 일컫는 말
식별자(예약어) : 키워드는 아니지만, private 멤버 변수로 사용하기 위해, 미리 정해진 용도로만 사용하는 문자
식별자 | 정의 | 예시 | |||||
_* | 모듈(파일) 안에서 _로 시작하는 식별자를 정의하면 다른 파일에서 접근 불가 | _age | |||||
__*__ | 식별자의 앞뒤에 __가 붙어 있는 식별자는 시스템에서 정의한 이름 | __name__ | |||||
__* | 클래스 안에서 외부로 노출되지 않는 식별자로 인식 | __name |
class BankAccount:
__id = 0
__name = ""
__balance = 0
def __init__(self, id, name, balance):
self.__id = id
self.__name = name
self.__balance = balance
def deposit(self, amount):
self.__balance += amount
def withdraw(self, amount):
self.__balance -= amount
def __str__(self):
return "{0}, {1}, {2}".format(self.__id, self.__name, self.__balance)
if __name__ == "__main__":
accountOne = BankAccount(100, "홍길동", 15000)
accountOne.withdraw(3000)
print(accountOne)
print(accountOne.__balance) #private 멤버 변수이므로 에러 발생
print(accountOne._BankAccount__Balance) # 에러 발생하지 않음
#private 멤버 변수에 접근할 때에는 바로 윗 줄처럼 접근( 객체이름._클래스이름__멤버변수이름 )
728x90
'Python > 구조 공부하기' 카테고리의 다른 글
[Python] 6. 다중 상속 및 이름 충돌 (2) | 2021.10.26 |
---|---|
[Python] 5. 상속과 다형성 (0) | 2021.10.26 |
[Python] 3. 정적 메소드 (0) | 2021.10.13 |
[Python] 2. 생성자 메소드와 소멸자 메소드 (0) | 2021.10.06 |
[Python] 1. 클래스와 인스턴스 (0) | 2021.10.05 |