>  기사  >  백엔드 개발  >  정적 메서드를 사용하는 방법

정적 메서드를 사용하는 방법

anonymity
anonymity원래의
2019-05-27 11:13:586371검색

정적 메서드와 클래스 메서드는 python2.2에서 참조되며 클래식 클래스와 새로운 스타일 클래스를 모두 사용할 수 있습니다. 동시에, 클래스의 특정 메소드를 이 두 메소드 중 하나로 변환하기 위해 한 쌍의 내장 함수인 staticmethod 및 classmethod가 도입되었습니다.

정적 메서드는 인스턴스의 참여 없이 호출할 수 있는 클래스의 메서드를 말합니다(자체 매개변수가 필요하지 않음). 호출 프로세스 중에 클래스를 인스턴스화할 필요가 없으며 메서드가 호출됩니다. 기호 연산자를 사용하여 클래스 바로 뒤에 있습니다.

정적 메서드를 사용하는 방법

일반적으로 정적 메서드는 @staticmethod 데코레이터를 사용하여 선언됩니다.

샘플 코드:

class ClassA(object):
    @staticmethod
    def func_a():
        print('Hello Python')
if __name__ == '__main__':
    ClassA.func_a()
    # 也可以使用实例调用,但是不会将实例作为参数传入静态方法
    ca = ClassA()
    ca.func_a()

여기서 주의해야 할 점은 Python 2에서 클래스 메서드에 self 매개 변수가 필요하지 않은 경우 정적 메서드로 선언해야 한다는 것입니다. 즉, @staticmethod 데코레이터가 추가됩니다. 인스턴스 없이 호출될 수 있습니다.

Python 3에서는 클래스 메서드에 self 매개 변수가 필요하지 않으면 더 이상 정적 메서드로 선언할 필요가 없습니다. 그러나 이 경우 이 메서드는 클래스를 통해서만 호출할 수 있습니다. 이 메서드를 호출하면 예외가 발생합니다.

class ClassA(object):
    def func_a():
        print('Hello Python')
if __name__ == '__main__':
    ClassA.func_a()
    # 以下使用实例调用会引发异常
    ca = ClassA()
    ca.func_a()

예외 정보:

func_a()는 0개의 위치 인수를 사용하지만 1개가 제공되었습니다.

func_a는 정적 메서드로 선언되지 않았기 때문에 클래스 인스턴스가 func_a를 호출하면 암시적으로 self 매개 변수를 func_a에 전달하고 func_a 자체는 매개변수를 받아들이지 않고 예외를 발생시킵니다.

위 내용은 정적 메서드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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