일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 함수실행시간
- sql
- with\
- 내일배움캠프
- WIL
- Level1
- vscode
- 우선순위
- 알고리즘
- 가상환경
- position
- cte
- googleappscript
- 함수성능평가
- itertools
- A태그
- 프로그래머스
- AI
- Display
- AI 5기
- onClick
- time()
- git #github #내일배움캠프
- Iterator
- venv
- googlesheet
- target
- python
- gitignore
- iterable
- Today
- Total
05의 개발 계발
[TIL] 230406 메소드(method)의 종류 (인스턴스 / 정적 / 클래스) 본문
TIL 학습목표
- Class의 메소드의 종류를 안다. (인스턴스 / 정적 / 클래스) 메소드
- 각 메소드의 차이점을 안다.
- 각 메소드의 사용법과 용도를 안다.
1) 문제점 (Problem)
알고리즘 문제를 풀다, 흠터레스팅 코드에서 str.maketrans() 을 사용하는 것을 보고 추가 학습을 진행하다가
메소드에도 종류가 있음을 알게되었다.
배운 부분을 정리해보도록 하자.
2) 학습한 내용 (Study)
▶메소드의 종류
메소드의 종류 | 설명 | 예시 |
인스턴스 메소드 (Instence Method) | 인스턴스로 호출하는 메소드 | .translate() |
정적 메소드 (Static Method) | 클래스로 호출하는 메소드로, 속성에 관여하지 않고 함수 자체의 기능만을 수행한다. | str.maketrans() |
클래스 메소드 (Class Method) | 클래스로 호출하는 메소드로, 클래스의 속성에 접근 가능한 메소드 | bytes.fromhex() |
▶각 메소드의 차이점
메소드의 종류 | 인자의 차이 | ||
인스턴스 메소드 (Instence Method) | 인자로 self를 받는다 | → | self. 으로 인스턴스의 속성값에 관여할 수 있다 |
정적 메소드 (Static Method) | 인자로 self를 받지않는다 | → | 클래스와 인스턴스의 속성값에 관여하지 않는다 |
클래스 메소드 (Class Method) | 인자로 cls를 받는다 | → | cls. 으로 클래스의 속성값에 관여할 수 있다 |
▶각 메소드의 사용법과 용도
1. 인스턴스 메소드
[사용법] <인스턴스>.<메소드>(인자1,인자2, ...)
[용도]
- 인스턴스의 속성 값에 관여해야 할 때 사용
- 인스턴스의 내용을 변경해야 할 때 사용
- 인스턴의에 변화를 줄 때, 즉 부수 효과(side effect)가 필요할 때 사용
2. 정적 메소드
[사용법] <클래스>.<정적메소드>(인자1,인자2, ...)
[용도]
- 인스턴스 속성, 인스턴스 메서드가 필요 없을 때 사용
- 메서드의 실행이 외부 상태에 영향을 끼치지 않는 순수 함수(pure function)를 만들 때 사용
- 순수 함수는 부수 효과(side effect)가 없고 입력 값이 같으면 언제나 같은 출력 값을 반환한다.
- 즉, 정적 메서드는 인스턴스의 상태를 변화시키지 않는 메서드를 만들 때 사용
- 인스턴스 내용과는 상관없이 결과만 구하면 될 때 사용
3. 클래스 메소드
[사용법] <클래스>.<클래스메소드>()
*cls → class의 약자
[용도]
- 메서드 안에서 클래스 속성, 클래스 메서드에 접근해야 할 때 사용
- 특히, cls를 사용하면 메서드 안에서 현재 클래스의 인스턴스를 만드는게 가능하다.
즉, cls는 클래스이므로 cls()는 Person()과 같다!
3) 시사점 (implication)
메소드의 구분 필요성
메소드는 (인스턴스메소드,정적메소드,클래스메소드) 총3가지로 구분되며, 다음과 같다.
1 - 인스턴스 메소드 : 일반적으로 인스턴스를 생성하여 인스턴스에 사용하는 메소드
2 - 정적 메소드 : self를 인자로 받지 않기에 인스턴스의 속성값에 관여하지 않고 일반 함수처럼 사용가능한 메소드
3 - 클래스 메소드 : 정적 메소드와 유사하지만, cls를 인자로 받으며 클래스의 속성값에 관여할 수 있는 메소드
현재 나의 수준에서 주로 사용하는 메소드는, 인스턴스 메소드와 정적 메소드 이다.
지금의 단계에선 사용법만 안다면 개념적으로 나누는 것이 코딩과정에서 유의미하지는 않다.
하지만 코드리뷰 등 소통을 할 때에, 메소드의 종류와 차이점을 모른다면 소통에 어려움이 있을 것 같다.
또한 각 메소드가 구분된다는 것은, 각 메소드의 특이점들이 코딩과정에서 필요했기에 생겼다는 것을 의미한다.
실제로 클래스 메소드를 학습하면서 클래스 자체의 속성값에 관여를 한다면, 인스턴스와 상속받는 클래스에게도 관여를 할 수 있으니 이를 활용할 수 있다는 생각이 들었다.
아직 사용하지는 않았지만, 알고 있는 것 만으로도 코딩 시야를 넓혀주는 것 같다.
따라서, 클래스를 사용한다면 메소드의 구분이 필요하다고 생각한다.
4) 알게 된 점 (Learnd)
메소드의 종류와 각 차이점, 사용법을 알게되었다.
아직 사용 하지 않은 기능이더라도 시야를 넓혀준다는 점에선 알아두는 편이 확실히 도움이 되는 것 같다.
초보라고 BFS 만 할 것이 아니라, DFS 도 필요한 것 같다.
'TIL' 카테고리의 다른 글
[TIL] 230417 회원가입 조건 세분화하기 | if (0) | 2023.04.18 |
---|---|
[TIL] 230407 [Python] [Django] Secret_Key 를 gitignore하기 (0) | 2023.04.07 |
[TIL] 230405 [Python] [Django] VScode에서 설치 및 세팅하기 (1) | 2023.04.05 |
[TIL] 230404 [Python] dictionary 의 key 인식 (1) | 2023.04.04 |
[TIL] 230403 [Python] 배열 뒤집기 _feat( [::] 슬라이싱) (0) | 2023.04.03 |