Python 정적 메소드

Python 정적 메소드

이 빠른 포스트에서는 Python 정적 메소드를 생성하고 사용하는 방법에 대해 배워보겠습니다. 또한 정적 메소드가 인스턴스 메소드와 비교했을 때 어떤 장단점을 제공하는지 살펴보겠습니다. 시작해 봅시다.

정적 메소드란?

Python에서의 정적 메소드는 파이썬 클래스 수준의 메소드와 매우 유사하지만, 정적 메소드는 해당 클래스의 객체가 아닌 클래스에 바인딩됩니다. 이는 정적 메소드가 해당 클래스의 객체 없이 호출될 수 있다는 것을 의미합니다. 또한 이는 정적 메소드가 객체의 상태를 수정할 수 없다는 것을 의미합니다. Python에서 정적 메소드를 어떻게 생성할 수 있는지 살펴봅시다.

Python 정적 메소드 생성하기

Python 정적 메소드는 두 가지 방법으로 생성할 수 있습니다. 각 방법을 여기에서 살펴봅시다:

staticmethod() 사용

staticmethod() 접근 방법을 사용하는 방법에 대한 샘플 코드 스니펫으로 바로 넘어가 보겠습니다:

class Calculator:

    def addNumbers(x, y):
        return x + y

# addNumbers 정적 메소드 생성
Calculator.addNumbers = staticmethod(Calculator.addNumbers)

print('Product:', Calculator.addNumbers(15, 110))

만든 addNumbers를 객체 없이 호출했다는 점에 유의하세요. 이 프로그램을 실행하면 다음과 같은 출력이 나옵니다: 거기에는 놀랄 일이 없었습니다. 이 접근 방법은 각 위치마다 클래스 메소드를 정적 메소드로 만들 수 있으므로 제어됩니다. 이제 동일한 예제로 다른 접근 방법을 살펴 보겠습니다.

사용@staticmethod

이는 정적 메소드를 만드는 더 섬세한 방법으로, 메소드의 정의를 클래스 메소드로 만들고 각 위치에서 정적으로 만드는 문을 의존하지 않아도 되기 때문입니다. 이 주석을 코드 스니펫에 사용해 봅시다:

class Calculator:

    # addNumbers 정적 메소드 생성
    @staticmethod
    def addNumbers(x, y):
        return x + y

print('Product:', Calculator.addNumbers(15, 110))

프로그램을 실행하면 다음과 같은 출력이 나옵니다: 실제로 이것은 정적 메서드를 만드는 더 좋은 방법이었습니다. 메서드를 정적으로 유지하려는 의도는 메서드를 만들자마자 @staticmethod 주석으로 명확하게 표시됩니다.

Python 정적 메서드의 장점

정적 메서드는 매우 명확한 사용 사례를 갖고 있습니다. 객체와 관련이 없는 기능이 필요할 때 클래스 전체에 대한 메서드를 정적으로 만듭니다. 일반적으로 유틸리티 메서드를 만들 때 이는 매우 유리합니다. 마지막으로, 정적 메서드에서는 첫 번째 인수로 self를 전달할 필요가 없음을 유의하십시오. API 참조: Python 문서

Source:
https://www.digitalocean.com/community/tutorials/python-static-method