클래스란?
- 객체(Object)를 생성하기 위한 틀(Template)
- 변수(속성)와 함수(메서드)를 묶어서 하나의 구조로 정의
class ClassName:
def method(self):
pass
생성자 __init__()
| 항목 | 설명 |
|---|
| 역할 | 객체 생성 시 자동 호출되는 함수 |
| 목적 | 인스턴스 변수 초기화 (초기 세팅) |
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
- init 함수는 클래스를 선언하는순간 실행이 된다.
- 객체가 생성될 때 실행됨
__init__() 안의 self.name은 객체의 속성, name은 전달된 값
self
| 항목 | 설명 |
|---|
| 의미 | 인스턴스 자기 자신을 가리킴 |
| 용도 | 인스턴스의 변수/메서드에 접근할 때 사용 |
def set_name(self, name):
self.name = name
- 메서드는 항상
self를 첫 번째 인자로 가짐
self.name: 인스턴스 변수에 접근
상속과 super()
| 항목 | 설명 |
|---|
| super() | 부모 클래스의 메서드 호출 시 사용 |
| 용도 | 부모 클래스의 생성자나 메서드를 자식 클래스에서 호출 |
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
super()는 부모 클래스에 접근할 때 사용
- 중복 제거 및 유지보수 용이
클래스 예시 전체
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name}가 소리를 냅니다")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def speak(self):
print(f"{self.name}는 멍멍 짖어요 ({self.breed})")
dog1 = Dog("초코", "푸들")
dog1.speak()
출력 결과
초코는 멍멍 짖어요 (푸들)
핵심 요약
| 키워드 | 의미 | 설명 |
|---|
| class | 클래스 정의 키워드 | 틀(template)을 만들기 위함 |
| init | 생성자 메서드 | 객체 생성 시 자동 호출 |
| self | 자기 객체 참조 | 인스턴스의 속성 접근용 |
| super() | 부모 클래스 참조 | 부모 메서드 호출용 |
자주 나오는 문법 요약
| 문법 | 설명 |
|---|
obj = ClassName() | 클래스 인스턴스 생성 |
self.attr = val | 객체 내부에 속성 저장 |
super().__init__() | 부모 클래스 생성자 호출 |
클래스 상속 | class SubClass(ParentClass): |