# 메서드 파이썬 클래스 내에는 인스턴스 메서드, 클래스 메서드, 정적 메서드라는 다양한 종류의 메서드가 존재합니다. 각 메서드는 다른 용도와 특징을 가지고 있으며, 어떤 상황에서 어떤 메서드를 사용해야 할지 이해하는 것이 중요합니다. * 인스턴스 메서드: 개별 객체의 상태를 변경하거나, 객체 고유의 기능을 구현할 때 사용합니다. * 클래스 메서드: 클래스 레벨에서 공통적으로 사용되는 기능을 구현하거나, 클래스 변수에 접근할 때 사용합니다. * 정적 메서드: 클래스와 인스턴스 상태와 무관한 일반적인 기능을 구현할 때 사용합니다. ## 인스턴스 메서드 (Instance Method) 객체(인스턴스)의 속성에 접근하고 변경할 수 있는 메서드입니다. 항상 `self`를 첫 번째 인자로 받아 자신을 가리킵니다. 개별 객체의 상태를 변경하거나, 객체의 고유한 기능을 구현할 때 사용합니다. ```python class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): print(f"안녕하세요, 저는 {self.name}입니다.") ``` 위 예시에서 `greet` 메서드는 인스턴스 메서드이며, `self.name`에 접근하여 개별 객체의 이름을 출력합니다. ## 클래스 메서드 (Class Method) 클래스 자체에 속하며, 클래스 변수에 접근하거나 클래스 레벨의 작업을 수행하는 메서드입니다. `cls`를 첫 번째 인자로 받아 클래스 자신을 가리킵니다. 클래스 메서드임을 나타내기 위해 `@classmethod` 데코레이터를 사용합니다. 클래스 레벨에서 공통적으로 사용되는 기능을 구현하거나, 서로 다른 클래스 간의 관계를 정의할 때 사용합니다. ```python class MyClass: x = 10 # 클래스 변수 @classmethod def class_method(cls): print(cls.x) ``` ## 정적 메서드 (Static Method) 클래스와 인스턴스 상태에 의존하지 않는, 일반 함수처럼 동작하는 메서드입니다. 특별한 인자를 받지 않습니다. 정적 메서드임을 나타내기 위해 `@staticmethod` 데코레이터를 사용합니다. 클래스와 관련된 유틸리티 함수를 정의할 때 사용합니다. ```python class MyClass: @staticmethod def greet(name): print(f"Hello, {name}!") ```