스프린트미션

규칙3

goodella 2026. 2. 12. 15:51

 

Rule3: 필수 키워드 전용 인자 제약 (Mandatory Keyword-Only Arguments)

  • [설계 의도] 인자가 여러 개일 때 발생할 수 있는 입력 순서 혼동을 원천 차단하기 위해 키워드 전용 인자(*) 사용을 강제하고자 함 
    • 생성자 (__init__): 인자가 1개라도 무조건 를 사용
      • 이유: 생성자의 인자(설정값)는 개발 과정에서 변경되거나 추가될 가능성이 매우 높음.  처음부터 키워드 사용을 강제하면, 나중에 인자가 늘어나더라도 기존 호출 코드를 수정해야 하는 리팩토링의 고통을 방지할 수 있음   
      • 예시: def __init__(self, *, filename: str):
    • 일반 메서드: 
      • 인자가 2개 이상이면 를 사용하여 키워드 인자를 강제함
      • 인자가 1개이고 의미가 명확하면(예: func(data)) 위치 인자를 허용
  • 예외 사항 (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