Rule3: 필수 키워드 전용 인자 제약 (Mandatory Keyword-Only Arguments)
- [설계 의도] 인자가 여러 개일 때 발생할 수 있는 입력 순서 혼동을 원천 차단하기 위해 키워드 전용 인자(*) 사용을 강제하고자 함
- 생성자 (__init__): 인자가 1개라도 무조건 를 사용
- 이유: 생성자의 인자(설정값)는 개발 과정에서 변경되거나 추가될 가능성이 매우 높음. 처음부터 키워드 사용을 강제하면, 나중에 인자가 늘어나더라도 기존 호출 코드를 수정해야 하는 리팩토링의 고통을 방지할 수 있음
- 예시: def __init__(self, *, filename: str):
- 일반 메서드:
- 인자가 2개 이상이면 를 사용하여 키워드 인자를 강제함
- 인자가 1개이고 의미가 명확하면(예: func(data)) 위치 인자를 허용
- 생성자 (__init__): 인자가 1개라도 무조건 를 사용
- 예외 사항 (Exceptions)
- 프레임워크 오버라이드: 부모 클래스의 메서드 시그니처를 그대로 따라야 하는 경우 부모 규칙을 따름 (예: PyTorch나 FastAPI 내장 메서드 재정의).
- 매직 메서드: __getitem__, __setitem__ 등 파이썬 표준 매직 메서드.
class VideoProcessor: # 1.생성자: 인자가 1개뿐이지만 리팩토링 대비를 위해 * 강제 def __init__(self, *, source_path: str) -> None: self._path = source_path # 2-1.메서드(인자 2개 이상): 순서 혼동 방지를 위해 * 강제 def resize(self, *, width: int, height: int) -> None: pass # 2-2.메서드 (인자 1개): 명확하므로 Positional 허용 def load(self, file_data: bytes): pass # 3.예외: 매직 메서드는 언어 표준 시그니처를 따름 def __getitem__(self, idx: int): pass
'스프린트미션' 카테고리의 다른 글
| 위클리페이퍼 7 (0) | 2026.03.03 |
|---|---|
| 위클리 페이퍼 #6 (0) | 2026.02.22 |
| 규칙1 (0) | 2026.02.12 |
| 규칙2 (0) | 2026.02.12 |
| [AI] 위클리페이퍼 #5 (0) | 2026.02.09 |