python에서 classmethod와 staticmethod 차이점은 첫번째 파라미터에 cls가 넘어오느냐 아니냐의 차이였다고 생각했는데 아래와 같은 동작 차이도 있었다.
호출가능여부를 체크할때에는 callable을 활용해야겠다.
import inspect
class ATest:
@classmethod
def test_classmethod(cls):
pass
@staticmethod
def test_staticmethod():
pass
inspect.isfunction(ATest.test_classmethod) # False
inspect.ismethod(ATest.test_classmethod) # True
callable(ATest.test_classmethod) # True
inspect.isfunction(ATest.test_staticmethod) # True
inspect.ismethod(ATest.test_staticmethod) # False
callable(ATest.test_staticmethod) # True
check in python 3.6+