메서드(method)는 「클래스 안에 정의된 함수」입니다.
인스턴스가 자기 데이터를 다루는 행동을 표현합니다.
모든 메서드는 첫 매개변수로 self를 받아 자기 인스턴스에 접근합니다.
기본 예시.
class Dog: def __init__(self, name): self.name = name; def bark(self): print(f"{self.name}가 멍멍!").
d = Dog("바둑이"); d.bark() — 「바둑이가 멍멍!」.
인스턴스 속성(attribute)은 「self.이름」 형식으로 만들고 접근합니다.
보통 __init__ 안에서 처음 설정하지만, 다른 메서드에서도 자유롭게 추가하거나 변경할 수 있습니다.
d.name — 속성 읽기.
d.name = "점박이" — 속성 변경.
동적 속성 추가.
다른 언어와 달리 파이썬은 「선언되지 않은 속성도 나중에 자유롭게 추가」할 수 있습니다.
d.age = 5 — 클래스에 age가 없어도 즉시 추가됨.
자유로움이 매력이지만 오타로 새 속성을 만드는 위험도 있어 __slots__ 같은 도구로 제한할 수 있습니다.
인스턴스마다 속성이 독립됩니다.
d1 = Dog("바둑이"), d2 = Dog("점박이") — 두 인스턴스의 name이 서로 영향 없음.
인스턴스 속성은 각자의 「개인 보관함」이고, 클래스 속성(다음에 다룸)은 「모두가 공유하는 공동 보관함」이라는 차이가 있습니다.
한 줄 요약
메서드는 클래스 안의 함수로 첫 매개변수가 self입니다.
인스턴스 속성은 self.name으로 만들고 접근하며, 인스턴스마다 독립됩니다.
더 알아볼 것
- 클래스 속성 vs 인스턴스 속성
- __init__ 외의 속성 초기화
- getattr·setattr·hasattr