인스턴스 메서드는 앞으로 소개해드릴 클래스 메서드나 정적 메서드와 달리 반드시 먼저 인스턴스를 생성 한 후에 해당 인스턴스를 대상으로 호출해야 합니다. 인스턴스 메서드의 첫번째 매개 변수는 자동으로 할당되기 때문에, 호출할 때 넘기는 첫번째 인자는 실제 인스턴스 메서드에서는 두번째 매개 변수에 할당되는 효과가 나타납니다.
클래스(class) 메서드
'@classmethod' 데코레이터를 사용해서 클래스에 메서드를 선언
첫번째 매개 변수로 클래스 인스턴스가 아닌 클래스 자체가 넘어오게 됩니다.
이 첫번째 매개 변수의 이름은 보통 관행적으로 cls라고 하며, 클래스 메서드는 이 cls를 통해 클래스 속성(attribute)에 접근하거나, 클래스 메서드를 호출할 수 있습니다.
하지만, 인스턴스 메서드와 달리 인스턴스 속성에 접근하거나 다른 인스턴스 메서드를 호출하는 것은 불가능
정적(static) 메서드
@staticmethod 데코레이터를 사용해서 클래스에 메서드를 선언하면 해당 메서드는 정적(static) 메서드가 되며, 정적 메서드는 인스턴스 메서드나 클래스 메서드와 달리 첫번째 매개 변수가 할당되지 않습니다.
따라서 정적 메서드 내에서는 인스턴스/클래스 속성에 접근하거나, 인스턴스/클래스 메서드를 호출하는 것이 불가능합니다.
정적 메서드는 유틸리티 메서드를 구현할 때 많이 사용
매개 변수로 넘어온 문자열에만 의존하는 순수한(pure) 함수이기 때문에 굳이 클래스의 일부로 선언할 필요는 없지만, 이렇게 비슷한 류의 여러 유틸리티 메서드를 하나의 클래스의 묶어두고 싶을 때 정적 메서드로 선언
https://www.daleseo.com/python-class-methods-vs-static-methods/
인스턴스(instance) 메서드
클래스(class) 메서드
정적(static) 메서드
@staticmethod
데코레이터를 사용해서 클래스에 메서드를 선언하면 해당 메서드는 정적(static) 메서드가 되며, 정적 메서드는 인스턴스 메서드나 클래스 메서드와 달리 첫번째 매개 변수가 할당되지 않습니다.따라서 정적 메서드 내에서는 인스턴스/클래스 속성에 접근하거나, 인스턴스/클래스 메서드를 호출하는 것이 불가능합니다.
정적 메서드는 유틸리티 메서드를 구현할 때 많이 사용
매개 변수로 넘어온 문자열에만 의존하는 순수한(pure) 함수이기 때문에 굳이 클래스의 일부로 선언할 필요는 없지만, 이렇게 비슷한 류의 여러 유틸리티 메서드를 하나의 클래스의 묶어두고 싶을 때 정적 메서드로 선언
정적 메서드를 호출하려면 정적 메서드 이름 앞에 클래스 이름을 붙여야 합니다.