코딩한걸음
Published 2024. 1. 18. 09:00
[Python] method type Python
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
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!