정적 메서드와 클래스 메서드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!