접근 지정자는 클래스 내의 속성에 접근을 제한하는 역할을 한다.
java에서는 public, protected, default, private 이렇게 4개의 접근 지정자가 존재하지만,
python은 속성과 메소드가 전부 public 이기 때문에 속성을 숨길 방법이 없고, 변수 앞에서 따로 자료형을 표시하지 않는다.
작명법을 통해 암묵적으로 접근 지정자를 사용하는 방법은 있지만, 이는 어디까지나 절대적인 것이 아니기에 사용을 삼가는 편이다.
그렇다면 구분법을 살펴보자.
구분 | 타입 | 의미 |
name | public | 클래스 안과 밖에서 자유롭게 호출, 사용 가능 |
_name | protected | 상속 클래스 안에서 정의되었을 경우, 클래스 정의부 밖에선 사용 불가능 |
__name | private | 일반적으로 접근과 확인 불가능, 클래스 정의 내부가 아니면 직접 호출 불가능 (속성의 정확한 이름을 통해 조회, 수정 가능) |
이 때, example class의 네임스페이스를 확인해보면,
마지막에서 3번째에 "__name"이 아닌, "_example__name"으로 명명이 되어있는 것을 확인할 수있다.
이를 이용할 경우, 아래와 같이 접근 가능함을 확인할 수 있다.
그러나 이는 어디까지나 임의로, 강제로 수정하는 것이기에 사용하지 않는 것을 지향한다.
그렇다면, private 변수를 호출, 수정할 경우엔 어떤 방식을 사용해야할까?
다음 게시물에서 이에 대한 답변인 getter, setter, 그리고 property에 대해 알아보자.
'Studying > Python' 카테고리의 다른 글
6. method overriding, method overloading(메소드 오버라이딩, 메소드 오버로딩) (0) | 2022.03.01 |
---|---|
5. getter, setter, property (0) | 2022.02.27 |
3. Context manager (0) | 2022.02.19 |
2. Lambda, Map, Reduce, Filter (0) | 2022.02.14 |
1. Variable Scope (scope, global, nonlocal) (0) | 2022.02.14 |