Files
python-examples/doc/10_02_methos.md
2025-01-20 02:26:20 +09:00

59 lines
2.4 KiB
Markdown

# 메서드
파이썬 클래스 내에는 인스턴스 메서드, 클래스 메서드, 정적 메서드라는 다양한 종류의 메서드가 존재합니다. 각 메서드는 다른 용도와 특징을 가지고 있으며, 어떤 상황에서 어떤 메서드를 사용해야 할지 이해하는 것이 중요합니다.
* 인스턴스 메서드: 개별 객체의 상태를 변경하거나, 객체 고유의 기능을 구현할 때 사용합니다.
* 클래스 메서드: 클래스 레벨에서 공통적으로 사용되는 기능을 구현하거나, 클래스 변수에 접근할 때 사용합니다.
* 정적 메서드: 클래스와 인스턴스 상태와 무관한 일반적인 기능을 구현할 때 사용합니다.
## 인스턴스 메서드 (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}!")
```