(ref : geeksforgeeks)
Class method
- 배경지식
1. 파이썬에서 다른 함수 안에 함수 정의가 가능하다
2. 파이썬에서 함수는 다른 함수에 매개 변수로 전달될 수 있다
@classmethod decorator
- 함수가 정의된 이후 evaluated(표현식이나 코드가 실행되어 결과를 얻는 과정)되는 표현식인 built-in function decorator입니다.
- 인스턴스 매서드가 인스턴스를 받는 것처럼, 클래스 매서드는 implicit(암시적(값을 지정하지 않아도 컴파일러 등에서 자동으로 처리되는 경우)) 으로 첫번째 인자를 받습니다
class Car:
def func(cls, arg1, arg2, ...):
pass
func: classmethod로 변환해야 하는 함수
returns:classmethod로 변환된 함수
- object 인스턴스가 아닌 (class를 가리키는 class parameter)를 갖기 때문에 class의 state에 access할 수 있습니다.
Static method
- Static method는 implicit first argument를 받지 않습니다.
- Static method 역시 object of class가 아닌 class에 bound되어있습니다.
- Static method는 class의 state에 access할 수 없습니다.
- method는 클래스 안에 정의되어 있지만, 클래스나 인스턴스와는 별개로 독립적으로 동작합니다.(method는 클래스에 존재하는 것이 합리적이라는 이유로 클래스 안에 정의되어 있을 뿐입니다.)
class Car(obj):
@staticmethod
def func(arg1, arg2, ...):
pass
returns : 함수 func에 대한 staticmethod(즉 해당 함수를 정적 메서드로 변환하여 return)