프로그래밍 언어/Python

파이썬의 정적 메서드

Rateye 2021. 12. 15. 11:48
728x90
반응형
질문 : 파이썬의 정적 메서드?

클래스를 초기화하지 않고 호출 할 수있는 Python에서 다음과 같은 정적 메서드를 가질 수 있습니까?

ClassName.static_method()
답변

네, staticmethod 데코레이터 사용

class MyClass(object):
    @staticmethod
    def the_static_method(x):
        print(x)

MyClass.the_static_method(2)  # outputs 2

일부 코드는 데코레이터가 아닌 함수로 staticmethod 를 사용하여 정적 메서드를 정의하는 이전 방법을 사용할 수 있습니다. 고대 버전의 Python (2.2 및 2.3)을 지원해야하는 경우에만 사용해야합니다.

class MyClass(object):
    def the_static_method(x):
        print(x)
    the_static_method = staticmethod(the_static_method)

MyClass.the_static_method(2)  # outputs 2

이것은 멋진 데코레이터 구문을 사용하지 않고 첫 번째 예제 ( @staticmethod

마지막으로 staticmethod 사용하지 마십시오! 파이썬에서 정적 메서드가 필요한 상황은 거의 없으며, 별도의 "최상위"함수가 더 명확 할 때 여러 번 사용하는 것을 보았습니다.


다음은 문서에서 그대로입니다. :

정적 메서드는 암시 적 첫 번째 인수를받지 않습니다. 정적 메서드를 선언하려면 다음 관용구를 사용하십시오.

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

@staticmethod 형태는 함수 인 장식 - 함수의 정의에 대한 설명을 참조 함수 정의 자세한.

Cf() ) 또는 인스턴스 (예 : C().f() )에서 호출 할 수 있습니다. 해당 클래스를 제외하고 인스턴스는 무시됩니다.

Python의 정적 메서드는 Java 또는 C ++에있는 것과 유사합니다. 고급 개념은 classmethod() 참조하십시오.

정적 메서드에 대한 자세한 내용은 The standard type hierarchy의 표준 유형 계층 에 대한 문서를 참조하세요.

버전 2.2의 새로운 기능.

버전 2.4에서 변경 : 함수 데코레이터 구문이 추가되었습니다.

출처 : https://stackoverflow.com/questions/735975/static-methods-in-python
728x90
반응형