Python에서는 클래스 내의 메서드를 인스턴스 메서드, 클래스 메서드, 정적 메서드로 분류할 수 있습니다. 각각은 고유한 목적을 갖고 클래스와 해당 인스턴스에 대한 다양한 수준의 액세스를 제공합니다. 이 블로그에서는 클래스 메서드와 정적 메서드, 사용 방법, 접할 수 있는 일반적인 인터뷰 질문을 살펴보겠습니다.
클래스 메서드와 정적 메서드를 살펴보기 전에 인스턴스 메서드를 간략하게 요약해 보겠습니다.
클래스 메서드는 클래스 인스턴스뿐만 아니라 클래스 자체에 액세스할 수 있는 메서드입니다. 클래스를 나타내는 첫 번째 매개변수로 cls를 사용합니다. @classmethod 데코레이터를 사용하여 정의됩니다.
대체 생성자를 생성하려면
클래스 수준 속성에 액세스하거나 수정하려면
이 예에서 from_birth_year는 태어난 연도부터 나이를 계산하고 Person 인스턴스를 생성하는 대체 생성자입니다.
이 예에서 Change_company는 company_name 클래스 속성을 변경하는 클래스 메서드입니다.
정적 메서드는 클래스 또는 인스턴스별 데이터에 액세스하거나 수정하지 않습니다. 이는 클래스에 속하고 @staticmethod 데코레이터를 사용하여 정의되는 유틸리티 메서드입니다.
클래스 및 인스턴스 데이터와 독립적으로 작동하는 유틸리티 함수를 정의합니다.
클래스 네임스페이스 내에서 코드를 체계적으로 정리합니다.
이 예에서 add는 클래스 또는 인스턴스 데이터와 독립적으로 추가를 수행하는 정적 메서드입니다.
인스턴스 메서드: 클래스(self)의 인스턴스에서 작동합니다.
클래스 메서드: 클래스 자체(cls)에서 작동합니다.
정적 메서드: 클래스 또는 인스턴스별 데이터에 대해 작업을 수행하지 마세요.
클래스 메서드: cls를 첫 번째 매개변수로 사용하여 클래스 자체에서 작동합니다. 클래스 수준 데이터를 수정할 수 있습니다.
정적 메서드: 클래스 및 인스턴스별 데이터와 독립적입니다. cls나 self를 첫 번째 매개변수로 사용하지 않습니다.
이 예에서 from_string은 문자열에서 Book 객체를 생성하는 대체 생성자(클래스 메서드)이고, is_valid_year는 연도가 유효한지 확인하는 정적 메서드입니다.
대체 생성자로서의 클래스 메서드는 다양한 종류의 입력 또는 시나리오에서 인스턴스를 생성하는 유연성을 제공하여 코드를 더 읽기 쉽게 만들고 객체 생성 논리를 위한 단일 위치를 유지합니다.
인스턴스 메서드: 클래스 인스턴스에서 작동하고 인스턴스별 데이터를 수정할 수 있습니다.
클래스 메서드: cls를 첫 번째 매개변수로 사용하여 클래스 자체에 대해 작업하고 클래스 수준 데이터를 수정할 수 있습니다.
정적 메서드: 클래스 또는 인스턴스별 데이터에 대해 작동하지 않으며 유틸리티 기능에 사용됩니다.
이러한 방법을 효과적으로 이해하고 활용하면 Python에서 보다 체계적이고 유연한 객체 지향 코드를 작성할 수 있습니다.
위 내용은 Python 인터뷰 준비: 클래스 메서드와 정적 메서드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!