Python 버전 <= 3.9: 클래스 본문 내에서 클래스 정적 메소드 호출
문제:
정적 메서드 데코레이터를 사용하여 클래스 본문 내에서 정적 메서드를 호출하려고 하면 정적 메서드 개체가 호출 가능하지 않은 것으로 확인되어 TypeError가 발생합니다. 이 동작은 설명자 바인딩으로 인해 발생합니다.
해결 방법:
한 가지 해결 방법은 마지막 사용 후 정적 메서드를 수동으로 정적 메서드로 변환하는 것입니다.
<code class="python">class Klass(object): def _stat_func(): return 42 _ANS = _stat_func() # Use the non-staticmethod version _stat_func = staticmethod(_stat_func) # Convert function to a static method def method(self): ret = Klass._stat_func() + Klass._ANS return ret
더 깔끔한 Python 방식:
Python 버전 <= 3.9의 경우 정적 메서드 개체의 __func__ 속성을 활용하여 원시 함수를 호출할 수 있습니다.
<code class="python">class Klass(object): @staticmethod # Use as decorator def stat_func(): return 42 _ANS = stat_func.__func__() # Call the staticmethod def method(self): ret = Klass.stat_func() return ret
Python 버전 >= 3.10:
Python 버전 3.10 이상에서는 정적 메서드 함수를 문제 없이 클래스 범위 내에서 직접 호출할 수 있습니다.
위 내용은 Python 버전 <= 3.9의 클래스 본문 내에서 클래스 정적 메서드를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!