python static method vs. class method

2022-08-21

사내에서 파이썬 코드를 짜다보면 static method와 class method를 혼용해서 사용하는 경우가 개인별로 있었는데 이 부분에 대해서 개인적으로 조사를 해서 전달할 기회가 있었다. 파이썬 책도 많이 봤고, 공식 레퍼런스도 봤지만 대부분 사용법에 대해서 애기가 대체로 있고, 언제 두개를 구분해서 사용해야하는 지에 대해서는 나와있지 않아서 몇개의 레퍼런스를 정리해봤다.

파이썬 코딩의 기술, 108p

파이썬에는 클래스별로 생성자를 한 개만 만들수 있다.( __init__)
클래스에 필요한 다른 생성자를 정의하려면 @classmethod를 사용하자.
구체(concrete) 서브 클래스를 만들고 연결하는 범용적인 방법을 제공하려면 클래스메소드의 다형성을 이용하자.

Fluent Python, 328p

class method는 대안 생성자를 구현하기 위해서 주로 사용된다.
본질적으로 static method는 클래스 본체 안에 정의된 평범한 함수일 뿐이다?
* 저자생각 - static method는 왜 쓰는지 모르겠다. 클래스와 함께 작동하지 않는 함수를 정의하려면 단지 함수를 모듈에 정의하면 된다. 함수가 클래스를 건드리지 않지만 클래스와 연관이 있어서 클래스 가까이 두고 싶을수는 있을것이다. 그런 경우에는 클래스의 바로 앞이나 뒤에 함수를 정의하면 된다.

*The definitive guide on how to use static, class or abstract methods in Python*

static method

class method

🧐 개인적인 생각

ps) 이번기회에 스스로 몰랐던 것을 알게 되어서 너무 좋다. 알고서 잘 짜는건 어렵다.

#Python  #dev  #Class  #static method  #class method