Class
1️⃣ 개념
- 파이썬에서 class는 객체지향 프로그래밍(OOP)의 핵심이다.
- Class란 설계도를 만들고, 이 설계도를 바탕으로 물건을 만들어 사용한다고 생각하면 된다.
2️⃣ 클래스 정의하기
- 클래스는 설계도이다. 설계도를 만들기 위해 데이터(속성)과 동작(메서드)가 필요하다.
class Student:
# 초기 설정 (__init__)
def __init__(self, name, age):
self.name = name # 학생 이름
self.age = age # 학생 나이
# 행동(메서드)
def introduce(self):
print(f"안녕하세요, 저는 {self.name}이고, {self.age}살입니다.")
3️⃣ 객체 생성하기
- 클래스를 바탕으로 객체를 생성해서 사용한다.
- 아래 코드에서
student1
과 student2
는 Student 클래스에서 만들어진 두 개의 독립적인 객체이다.
student1 = Student("철수", 15) # 철수라는 학생 객체 생성
student2 = Student("영희", 14) # 영희라는 학생 객체 생성
4️⃣ 객체 사용하기
- 객체를 생성하면, 그 클래스 안에 있는 데이터(속성)과 행동(메서드)를 사용할 수 있다.
student1.introduce() # 철수의 소개
# 출력: 안녕하세요, 저는 철수이고, 15살입니다.
student2.introduce() # 영희의 소개
# 출력: 안녕하세요, 저는 영희이고, 14살입니다.
5️⃣ self
self
는 클래스와 객체의 관계를 이해하는 핵심이다. self
는 현재 이 객체 자신을 가리키는 특별한 변수이다.
self
는 메서드가 내가 지금 어떤 객체와 관련된 동작을 수행 중인지 알게 해준다.
- 객체 자신의 데이터(속성)과 메서드(행동)에 접근한다.
self가 있는 코드
class Student:
def __init__(self, name, age):
self.name = name # 이 객체의 name 속성을 설정
self.age = age # 이 객체의 age 속성을 설정
def introduce(self):
print(f"안녕하세요, 저는 {self.name}이고, {self.age}살입니다.")
student1 = Student("철수", 15) # 철수라는 학생 객체 생성
student2 = Student("영희", 14) # 영희라는 학생 객체 생성
student1.introduce() # self는 student1을 가리킴
# 출력: 안녕하세요, 저는 철수이고, 15살입니다.
student2.introduce() # self는 student2를 가리킴
# 출력: 안녕하세요, 저는 영희이고, 14살입니다.
self
덕분에 메서드가 호출된 객체에 맞는 데이터를 사용할 수 있다.
self가 없는 코드
self
가 없으면, 메서드가 어느 객체에 연결되어 있는지 알 수 없다.
class Student:
def __init__(name, age): # self 빠짐
name = name # 누구의 name인지 알 수 없음!
age = age # 누구의 age인지 알 수 없음!