>백엔드 개발 >파이썬 튜토리얼 >Python의 정적 메서드는 인스턴스 메서드와 어떻게 다르며 어떻게 호출됩니까?

Python의 정적 메서드는 인스턴스 메서드와 어떻게 다르며 어떻게 호출됩니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 01:12:11400검색

How Do Static Methods in Python Differ from Instance Methods, and How Are They Invoked?

클래스 인스턴스에서 직접 정적 메서드 호출

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.