728x90
반응형
질문 : 파이썬의 정적 메서드?
클래스를 초기화하지 않고 호출 할 수있는 Python에서 다음과 같은 정적 메서드를 가질 수 있습니까?
ClassName.static_method()
답변
네, staticmethod 데코레이터 사용
class MyClass(object):
@staticmethod
def the_static_method(x):
print(x)
MyClass.the_static_method(2) # outputs 2
일부 코드는 데코레이터가 아닌 함수로 staticmethod
를 사용하여 정적 메서드를 정의하는 이전 방법을 사용할 수 있습니다. 고대 버전의 Python (2.2 및 2.3)을 지원해야하는 경우에만 사용해야합니다.
class MyClass(object):
def the_static_method(x):
print(x)
the_static_method = staticmethod(the_static_method)
MyClass.the_static_method(2) # outputs 2
이것은 멋진 데코레이터 구문을 사용하지 않고 첫 번째 예제 ( @staticmethod
마지막으로 staticmethod
사용하지 마십시오! 파이썬에서 정적 메서드가 필요한 상황은 거의 없으며, 별도의 "최상위"함수가 더 명확 할 때 여러 번 사용하는 것을 보았습니다.
정적 메서드는 암시 적 첫 번째 인수를받지 않습니다. 정적 메서드를 선언하려면 다음 관용구를 사용하십시오.
class C:
@staticmethod
def f(arg1, arg2, ...): ...
@staticmethod 형태는 함수 인 장식 - 함수의 정의에 대한 설명을 참조 함수 정의 자세한.
Cf()
) 또는 인스턴스 (예 : C().f()
)에서 호출 할 수 있습니다. 해당 클래스를 제외하고 인스턴스는 무시됩니다.
Python의 정적 메서드는 Java 또는 C ++에있는 것과 유사합니다. 고급 개념은 classmethod()
참조하십시오.
정적 메서드에 대한 자세한 내용은 The standard type hierarchy의 표준 유형 계층 에 대한 문서를 참조하세요.
버전 2.2의 새로운 기능.
버전 2.4에서 변경 : 함수 데코레이터 구문이 추가되었습니다.
출처 : https://stackoverflow.com/questions/735975/static-methods-in-python
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python 단위 테스트 파일의 위치 (0) | 2021.12.16 |
---|---|
파이썬 requests을 사용하여 이미지를 다운로드하는 방법 (0) | 2021.12.16 |
Python의 stdlib를 사용하여 로컬 IP 주소 찾기 (0) | 2021.12.15 |
일반 Python 목록에 비해 NumPy의 장점 (0) | 2021.12.15 |
파이썬 인스턴스의 클래스 이름을 얻는 방법 (0) | 2021.12.15 |