일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩
- 개발자
- 유데미 러닝크루
- ExpansionTile
- 책
- 명령어
- flutter
- 다트
- 리눅스
- 도서
- vscode
- 파이썬
- 유데미 코리아
- linux
- copyWIth
- 프로그래밍
- python
- command
- 개발
- Code Generation
- 가상환경
- 맥
- riverpod
- ListTile
- 플러터
- 디자인패턴
- 유데미
- dart
- 리버팟
- freezeD
- Today
- Total
승상의 코딩 블로그
파이썬 - staticmethod 본문
class Operation:
@staticmethod
def add(a, b):
return a+b
Operation.add(1, 2) # 3
함수위에 @staticmethod 가 붙은 코드를 종종 볼 수 있습니다.
staticmethod 로 설정된 함수는 인스턴스로 만들어서 사용할 수 있고, 인스턴스 생성없이도 사용할 수 있습니다.
대신, 클래스 내의 속성에는 접근할 수 없습니다.
staticmethod 는 언제 사용하면 좋을까요?
def add(a, b):
return a + b
add(1,2) # 3
"Q.staticmethod 함수는 클래스 내부의 데이터에 클래스 함수처럼 접근할 수 없는데, 그냥 add 함수를 만들어 써도 되지 않을까요?"
이러한 함수가 하나뿐이라면 단순히 add 를 써도 좋습니다. 항상 문제는 코드가 커지고 복잡해지면서 생기게 됩니다.
add, mul, divide, ... 함수들이 늘어난다고 해봅시다. add, mul, divide 같은 이름은 기능이 단순하고 명확합니다.
그러나 실제로는 이렇게 명확하게 함수를 설명하는 것은 무지하게 어렵습니다.
class 내의 staticmethod 를 통해, 이 함수들을 그룹핑할 수 있습니다.
"Q. 그러면 파일로 그룹핑하며 되지 않을까요?"
class Operation:
def __init__(self):
self.sum = 0
def add(self, a):
self.sum += a
return self.sum
@staticmethod
def add(a, b):
return a + b
operation = Operation()
operation.add(1) # sum : 1
Operation.add(1, 2) # 3
단순히 '두 개의 값을 더해서 단순 결과를 반환하는 함수'가 아니라, '기존 값에다가 값을 더하는 함수'를 추가로 구현한다면?
'기존 값에다가 값을 더하는 함수'는 내부적으로 데이터를 관리해야하니까, 클래스로 만들어 질 것입니다.
두 개의 값을 더해서 단순 결과를 반환하는 함수를 포함할 수 있는 클래스가 있다면, 하나의 바운더리(Class)로 묶어두는 것이 효율적일 것입니다. (이렇게 추가된 함수는 staticmethod 가 붙어있으므로, 내부데이터를 사용하지 않음 알 수 있습니다.)
'Python (파이썬)' 카테고리의 다른 글
디자인 패턴 - 빌더 패턴(Builder Pattern) with 파이썬(python) (0) | 2023.07.09 |
---|---|
파이썬 - sqlite3 라이브러리 (0) | 2023.06.01 |
디자인 패턴 - 팩토리 패턴(Factory Pattern) with 파이썬(python) (2) | 2023.05.29 |
self 의 역할 (함수의 메모리) (0) | 2023.01.23 |
파이썬 - dataclass(데이터클래스) (0) | 2022.12.31 |