Re: 정적매서드
, 도장_ 관리자님이 작성클래스에는 인스턴스 메서드, 정적 메서드, 클래스 메서드가 있습니다.
각각의 용도에는 차이가 있습니다.
- 인스턴스 메서드: 객체 자체에 있는 정보(데이터)를 사용
- 정적 메서드: 객체 자체의 정보를 사용하지 않는 순수 함수
- 클래스 메서드: 클래스의 정보를 사용하는 함수
객체(인스턴스)를 여러 개 만들었을 때 인스턴스 메서드는 각각의 결과를 냅니다.
정적 메서드는 객체 전체에서 공유하므로 어떤 인스턴스에서 호출해도 같은 결과를 냅니다.
클래스 메서드는 해당 클래스의 정보를 이용해 결과를 냅니다.
이때 정적 메서드와 클래스 메서드는 같아 보이는데,
A -> B 클래스로 상속했을 때 차이가 드러납니다.
정적 메서드는 상속해서 A와 B가 같은 정보를 공유하므로 같고,
클래스 메서드는 클래스의 정보만 이용하므로 A에서 호출하면 A 클래스의 정보를 이용하고, B에서 호출하면 B 클래스의 정보를 이용합니다. 클래스 자체의 정보를 이용할 때 사용합니다.
다른 언어는 정적 메서드를 클래스.정적메서드로 접근하는데, 파이썬은 클래스.정적메서드, 인스턴스.정적메서드, 두 가지 모두 가능합니다. 그래서 주의해야 합니다. 다른 언어와 마찬가지로 정적 메서드는 클래스.정적메서드로 쓰는 것이 좋습니다.
다음 예제를 살펴보세요.
https://glot.io/snippets/fbutmlo0h9