728x90
반응형
Python method type
파이썬에서는 메서드를 세 가지 타입으로 분류한다.
- 인스턴스 메서드(instance methods)
- 클래스 메서드(class methods)
- 정적 메서드(static methods)
인스턴스 메서드 (Instance methods)
- 인스턴스(객체)에 대한 메서드
- 첫 번째 파라미터로 `self`를 사용하여, 인스턴스 자신을 참조합니다.
- 해당 인스턴스의 속성(데이터)과 다른 메서드에 접근할 수 있음
- 일반적으로 클래스 정의의 기본 메서드 타입
클래스 메서드 (Class methods)
- 클래스 자체에 대해 작동
- `@classmethod` 데코레이터로 정의되며, 첫 번째 파라미터로 `cls`를 사용하여 클래스 자체를 참조
- 인스턴스 속성이 아닌 클래스 속성(클래스 변수)에 접근하고 수정하는데 사용
- 인스턴스 생성 없이도 호출 가능
정적 메서드 (Static methods)
- 클래스나 인스턴스와는 독립적으로 작동
- `@staticmethod` 데코레이터로 정의
- `self`, `cls` 파라미터를 사용하지 않음
- 독립적으로 사용되기 때문에 다른 속성에 접근하거나 해당 클래스 내의 다른 메소드를 호출할 수 없음
class Book:
# 클래스 변수 (모든 인스턴스에서 공유)
total_books = 0
def __init__(self, title):
self.title = title # 인스턴스 변수
Book.total_books += 1 # 클래스 변수 증가
# 인스턴스 메서드
def display_title(self):
return f"Book title: {self.title}"
# 클래스 메서드
@classmethod
def total_book_count(cls):
return f"Total number of books: {cls.total_books}"
# 정적 메서드
@staticmethod
def is_book_instance(obj):
return isinstance(obj, Book)
# 인스턴스 생성
book1 = Book("Python Programming")
book2 = Book("Learning AI")
# 인스턴스 메서드 호출
print(book1.display_title()) # "Book title: Python Programming"
# 클래스 메서드 호출
print(Book.total_book_count()) # "Total number of books: 2"
# 정적 메서드 호출
print(Book.is_book_instance(book1)) # True
print(Book.is_book_instance("Not a Book")) # False
728x90
반응형