[Python] 클래스 메서드, 정적 메서드, 생성자와 소멸자 - @classmethod, @staticmethod, __init__
by 우와한개발자
1. 클래스 메서드와 정적 메서드
- 객체를 생성하지 않고 클래스 이름으로 참조하는 메서드
1) 클래스(class) 메서드
- 클래스 변수(클래스 멤버)를 참조하거나 수정할 때 사용
- @classmethod 데코레이터 선언
- 첫 번째 인수로 클래스 자기자신 cls 선언 (자동으로 전달됨)
class Person:
count = 0 # 클래스 변수
def __init__(self, name):
self.name = name
Person.count += 1
@classmethod
def get_count(cls):
return cls.count # 클래스 변수 참조
p1 = Person('홍길동')
p2 = Person('김철수')
print(Person.get_count()) # 2
2) 정적(static) 메서드
- 클래스/인스턴스 변수에 접근할 필요 없을 때 사용
- @staticmethod 데코레이터 선언
- self, cls 파라미터 없음
class MathUtils:
@staticmethod
def add(a, b):
return a + b
print(MathUtils.add(3, 5)) # 8
2. 생성자와 소멸자
1) 생성자 : __init__()
- 객체가 생성될 때 자동으로 실행
- 첫 번째 인수로 self 정의
- 자바처럼 클래스 상단에 멤버 변수를 미리 선언하지 않고, 생성자 안에서 self.변수명으로 동적으로 선언
- 생성자를 이용해 인스턴스 변수를 초기화
- 생성자 중복 정의(오버로딩) 안되기 때문에 파라미터가 많고 기본값을 지정하는 경우가 많음
class Person:
def __init__(self, name, gender='미설정', age=0):
self.name = name # 인스턴스 변수 동적 선언
self.gender = gender
self.age = age
p1 = Person('홍길동') # gender, age 기본값 사용
p2 = Person('김철수', '남자', 30) # 모두 전달
2) 소멸자 : __del__()
- 객체의 참조 수가 0이 될 때 자동 실행
- del 키워드로 직접 삭제하거나 None을 할당하면 참조 수가 줄어듦
class Person:
def __init__(self, name):
self.name = name
print(f'{self.name} 생성')
def __del__(self):
print(f'{self.name} 소멸')
p1 = Person('홍길동') # '홍길동 생성'
del p1 # '홍길동 소멸'
p2 = Person('김철수') # '김철수 생성'
p2 = None # '김철수 소멸' — 참조 수 0이 되어 소멸
'언어 > Python' 카테고리의 다른 글
| [Python] 예외처리 - try/except, raise, 추상클래스, 사용자 정의 예외 (0) | 2026.04.19 |
|---|---|
| [Python] 클래스 상속 - super(), 메서드 재정의, name mangling(_클래스명__변수명) (0) | 2026.04.19 |
| [Python] 클래스(class)와 객체(object) - 구조, 네임스페이스, self (0) | 2026.04.19 |
| [Python] 패키지(package)와 pyc 파일 - __init__.py, __pycache__ 폴더 (0) | 2026.04.19 |
| [Python] 모듈(module) - import 방법, sys.path, __name__ (0) | 2026.04.16 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자