💻
프로그래밍
메서드
Method
객체에 속한 함수. 클래스의 동작을 정의. 인스턴스 메서드, 클래스 메서드, 정적 메서드로 구분.
Method
객체에 속한 함수. 클래스의 동작을 정의. 인스턴스 메서드, 클래스 메서드, 정적 메서드로 구분.
메서드(Method)는 객체에 속한 함수로, 클래스가 수행할 수 있는 동작을 정의합니다. 일반 함수와 달리 메서드는 객체의 상태(필드)에 접근하고 수정할 수 있으며, 객체의 컨텍스트에서 실행됩니다.
메서드는 크게 세 종류로 나뉩니다. 인스턴스 메서드는 객체 인스턴스에서 호출되며 this/self를 통해 인스턴스 데이터에 접근합니다. 클래스 메서드는 클래스 자체에서 호출되며 cls를 통해 클래스 속성에 접근합니다. 정적 메서드는 인스턴스나 클래스와 무관하게 동작합니다.
메서드 오버로딩(같은 이름, 다른 파라미터)과 오버라이딩(상속받아 재정의)은 다형성을 구현하는 핵심 기법입니다. Java, C++은 오버로딩을 지원하지만, Python은 기본적으로 지원하지 않아 기본값이나 *args로 비슷한 효과를 냅니다.
getter/setter 메서드는 필드에 대한 접근을 제어합니다. Python의 @property 데코레이터나 Java의 접근자/설정자 패턴이 대표적입니다. 이를 통해 캡슐화를 유지하면서 값 검증이나 부가 로직을 추가할 수 있습니다.
class BankAccount:
interest_rate = 0.02 # 클래스 변수
def __init__(self, owner, balance=0):
self.owner = owner
self._balance = balance # 보호된 속성
# 인스턴스 메서드: self를 통해 인스턴스 접근
def deposit(self, amount):
if amount > 0:
self._balance += amount
return True
return False
def withdraw(self, amount):
if 0 < amount <= self._balance:
self._balance -= amount
return True
return False
# Property: getter/setter 역할
@property
def balance(self):
return self._balance
# 클래스 메서드: cls를 통해 클래스 접근
@classmethod
def set_interest_rate(cls, rate):
cls.interest_rate = rate
# 정적 메서드: 인스턴스/클래스와 무관
@staticmethod
def validate_amount(amount):
return isinstance(amount, (int, float)) and amount > 0
# 사용 예시
account = BankAccount("김개발", 1000)
account.deposit(500)
print(f"잔액: {account.balance}") # 1500
BankAccount.set_interest_rate(0.03) # 클래스 메서드 호출