>백엔드 개발 >파이썬 튜토리얼 >Python에서 `@classmethod`와 `@staticmethod`의 차이점은 무엇입니까?

Python에서 `@classmethod`와 `@staticmethod`의 차이점은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-22 10:16:46232검색

What's the Difference Between `@classmethod` and `@staticmethod` in Python?

초보자를 위한 @classmethod 및 @staticmethod의 의미 및 사용법

Python에서 @classmethod 및 @staticmethod는 다음을 사용하여 메서드를 정의하는 데 사용되는 데코레이터입니다. 특정한

@classmethod

클래스 메서드는 클래스의 개별 인스턴스가 아닌 클래스에 바인딩되는 메서드입니다. 일반적으로 cls라는 이름의 첫 번째 인수로 클래스가 있어야 합니다. 관례적으로 클래스 메소드 이름은 from_ 또는 create_ 접두사로 지정됩니다.

@classmethod를 사용해야 하는 경우:

  • 클래스의 새 인스턴스입니다.
  • 클래스 자체가 아닌 클래스 자체에서 작동하는 메서드를 정의하려는 경우 인스턴스.

예:

class Date:
    def __init__(self, day, month, year):
        self.day = day
        self.month = month
        self.year = year

    @classmethod
    def from_string(cls, date_as_string):
        day, month, year = map(int, date_as_string.split('-'))
        return cls(day, month, year)

@staticmethod

정적 메서드는 정적 메서드가 아닌 메서드입니다. 클래스나 인스턴스에 바인딩됩니다. 인스턴스나 클래스 변수에 액세스할 수 없습니다. 정적 메서드는 일반적으로 수정 없이 재사용할 수 있는 유틸리티 함수에 사용됩니다.

@staticmethod를 사용하는 경우:

  • 수행하는 함수를 정의하려는 경우 일부 작업은 수행되지만 클래스나 인스턴스 상태에 의존하지 않습니다.
  • 어느 곳에서든 호출할 수 있는 함수를 만들고 싶을 때 context.

예:

class Date:
    @staticmethod
    def is_date_valid(date_as_string):
        day, month, year = map(int, date_as_string.split('-'))
        return day <= 31 and month <= 12 and year <= 3999

@classmethod와 @staticmethod의 차이점

Feature @classmethod @staticmethod
Access to class Has access to the class No access to the class
Access to instance No access to instances No access to instances
Usage Factory methods, operations on the class Utility functions, independent of class or instances

위 내용은 Python에서 `@classmethod`와 `@staticmethod`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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