인스턴스, 클래스, 독립 도우미의 역할을 구분합니다.
인스턴스 메서드는 self, classmethod는 cls를 받고 클래스 전체와 관련된 대체 생성자에 자주 사용합니다. staticmethod는 인스턴스나 클래스 상태가 필요 없는 관련 도우미를 클래스 이름 공간에 둡니다.
Course.from_text('Python:56')은 문자열을 콜론으로 나눠 제목과 강좌 수를 얻고, staticmethod인 normalize_title로 제목을 다듬은 뒤 cls(...)로 인스턴스를 만듭니다. platform은 클래스 속성이라 인스턴스에서 읽어도 같은 값이 나와 hohyeon.dev Python 56이 출력됩니다. 콜론이 없는 문자열은 두 이름에 나눠 담지 못해 ValueError가 납니다.
classmethod는 상속된 하위 클래스를 cls로 받아 확장에 유리합니다. 단순 유틸리티가 특정 클래스와 관련 없다면 모듈 함수가 더 자연스럽습니다.
생성 방식이 여러 개일 때 대체 생성자 이름을 from_string처럼 입력 형식이 드러나게 정합니다.
모든 함수를 클래스 안 staticmethod로 모으는 것은 객체지향 설계가 아니라 이름 공간만 복잡하게 만들 수 있습니다.
직접 바꿔보세요from_dict 대체 생성자를 추가해 딕셔너리에서 강좌를 만드세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.