Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- nginx
- 코딩테스트
- SQL
- Doker
- flask
- 연습
- Python
- 오블완
- 티스토리챌린지
- django
- 쿠키(cookie)
- 장고
- 파이썬
- JWT
- Wil
- CS
- Til
- redis
- git
- web
- 아티클 스터디
- 도커
- NoSQL
- 세션(Session)
- 자료구조
- github
- viewsets
- 개발공부
- ERD
- docker
Archives
- Today
- Total
SteadyDrills
[TIL] 인스턴스 메서드의 접근 지정자 (Access Modifiers) - Public Methods,Protected Methods,Private Methods 본문
PYTHON
[TIL] 인스턴스 메서드의 접근 지정자 (Access Modifiers) - Public Methods,Protected Methods,Private Methods
Drills 2024. 7. 23. 23:53240723
파이썬에서는 클래스 내부에서 메서드를 정의할 때, 메서드의 접근 제한을 설정하는 기능이 다른 언어에 비해 덜 엄격하다.
하지만 관례적으로 메서드의 접근성을 표시하는 방법이 있으므로 유의해야 한다.
Public Methods
퍼블릭 메서드(Public Methods)는 외부에서 자유롭게 접근 가능한 메서드. 기본적으로 정의되는 메서드다.
class MyClass:
def public_method(self):
print("This is a public method")
pub = MyClass()
pub.public_method() # This is a public method
*Protected Methods
프로텍티드 메서드(Protected Methods)는 하나의 밑줄(_)로 시작하는 메서드다. 이 메서드는 파이썬에서 정의되어 실제 접근 제한이 아니라, 관례상 그렇게 사용되는 것이다. 그렇기 때문에 서브 클래스에서 실제로는 접근이 가능하다.(하지만... 관례를 지키지 않거나 모르는 개발자는 협업에 기피당한다고 한다...)
class MyClass:
def _protected_method(self):
print("This is a protected method")
class SubClass(MyClass):
def access_protected_method(self):
self._protected_method()
sub = SubClass()
sub.access_protected_method()
# This is a protected method(실제로는 접근이 가능하나 암묵적인 관례상 접근을 할 수 없다.)
Private Methods
프라이빗 메서드(Private Methods)는 두 개의 밑줄(__)로 시작하는 메서드다. 클래스 내부에서만 접근할 수 있으며 직접 사용해서 클래스 외부에서는 접근할 수 없다.( Protected Methods 와는 달리 파이썬 자체에서 지원하므로 실제로 외부에서 접근할 수 없다. )
class MyClass:
def __private_method(self): # private method
print("This is a private method")
def call_private_method(self): # private method를 호출하기 위한 메서드
self.__private_method()
obj = MyClass()
obj.call_private_method() # This is a private method
obj.__private_method() # AttributeError: 'MyClass' object has no attribute '__private_method'
'PYTHON' 카테고리의 다른 글
Python - AI 관련 라이브러리 (0) | 2024.07.30 |
---|---|
[TIL] 시간 복잡도와 빅오 표기법(Big-O notation) (1) | 2024.07.24 |
[TIL]객체의 비교: 동일성(is)과 동등성(==) (0) | 2024.07.22 |
[TIL]파이썬 - 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) | 2024.07.19 |
[TIL] 재귀함수 & lambda함수 (2) | 2024.07.18 |