클래스 인스턴스에서 직접 정적 메서드 호출
Python에서 정적 메서드는 클래스 메서드에 액세스하는 대체 접근 방식을 제공합니다. 인스턴스화가 필요하지 않고 클래스 자체를 통해 직접 액세스할 수 있다는 점에서 인스턴스 메서드와 다르게 동작합니다.
정적 메서드 생성
정적 메서드를 정의하려면 , @staticmethod 데코레이터가 사용됩니다. 이 데코레이터는 메서드 시그니처에서 self 인수를 제거하여 정적 메서드임을 나타냅니다. 다음 코드 예제는 이를 보여줍니다.
class MyClass(object): @staticmethod def the_static_method(x): print(x)
정적 메서드 호출
인스턴스 메서드와 달리 정적 메서드는 클래스 인스턴스 또는 클래스에서 직접 호출할 수 있습니다. 그 자체. 다음 코드 조각은 이 동작을 보여줍니다.
MyClass.the_static_method(2) # outputs 2 MyClass().the_static_method(2) # also outputs 2
레거시 정적 메서드 정의와의 비교
이전 버전의 Python(2.2 및 2.3)은 정의를 위해 다른 접근 방식을 사용했습니다. 데코레이터 대신 정적 메서드를 함수로 사용하는 정적 메서드. 그러나 이는 고대 Python 구현과의 호환성을 유지하기 위해서만 필요합니다.
class MyClass(object): def the_static_method(x): print(x) the_static_method = staticmethod(the_static_method)
정적 메서드 사용 자제
정적 메서드를 사용해야 한다는 점에 유의하는 것이 중요합니다. 아껴서. 대부분의 경우 별도의 최상위 함수가 더 명확한 솔루션을 제공합니다.
공식 문서
Python 문서에서는 정적 메서드를 다음과 같이 설명합니다.
정적 메서드는 암시적인 첫 번째 인수를 받지 않습니다. 정적 메서드를 선언하려면 다음 관용어를 사용하세요.
class C: @staticmethod def f(arg1, arg2, ...): ...@staticmethod 형식은 데코레이터 함수입니다. 자세한 내용은 함수 정의에서 함수 정의에 대한 설명을 참조하세요.
클래스(예: C.f()) 또는 인스턴스(예: C().f())로. 인스턴스는 해당 클래스를 제외하고는 무시됩니다.
Python의 정적 메소드는 Java 또는 C의 메소드와 유사합니다. 더 고급 개념은 classmethod()를 참조하세요.
정적 메서드에 대한 자세한 내용은 _표준 유형 계층 구조_에서 표준 유형 계층 구조에 대한 문서를 참조하세요.
위 내용은 Python의 정적 메서드는 인스턴스 메서드와 어떻게 다르며 어떻게 호출됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!