Chapter 01. 데이터 분석가에게 꼭 필요한 기초 문법
클래스 기초
클래스
클래스는 객체를 만들기 위한 틀이고, 객체는 클래스로부터 만든 자료형
• type 함수는 객체의 타입을 확인하기 위한 함수로, 어느 클래스로부터 나왔는지 알려줌
• 예를 들어, int 자료형은 int 클래스에서 만들어진 객체로 이들은 같은 틀에서 나왔으므로 서로 유사한 성질이 있음.
• 데이터 분석에 자주 사용되는 객체를 이해하는데 주로 필요
• 모델링을 할 때는 모델을 만드는 틀을 만들어서 모델 객체를 만들때 클래스를 활용
모델클래스
1.학습 기능 2. 예측 기능 3. 모델 속성 ---> 모델 객체
클래스가 필요한 이유: 모델 예시
y = ax + b라는 단순한 모델을 만들때도 클래스 사용 유무에 따라 효율 차이가 난다.
* 클래스 미사용시 : a,b 학습 함수 🡪 매 데이터마다 a,b 추정 🡪 a, b를 바탕으로 y를 예측하는 함수 🡪 매 예측 때마다 a,b를 이용하여 함수 활용 // 모델에 새 기능을 추가해야 한다면 🡪 코드 전체 재설계 필요
* 클래스 사용시 : 클래스 (학습, 예측 기능 포함) 🡪 모델 객체 🡪 모델의 메서드를 이용하여 학습/예측 수행 (모델만 저장하면 됨) // 모델에 새 기능을 추가해야 한다면 🡪 클래스에 함수 추가
생성자, 속성, 메서드
생성자 (constructor)
생성자는 객체가 생성될 때 자동으로 호출되는 메서드로 객체의 초기 상태를 설정.
• 생성자는 __init__() 메서드로 정의됩니다.
• 첫 번째 매개변수는 항상 self이며, 이는 생성된 객체를 나타냅니다.
class Person:
def __init__(self, name, age):
self.name = name # 이름 속성 초기화
self.age = age # 나이 속성 초기화
# 객체 생성 시 생성자 호출
person1 = Person("홍길동", 32) # self가 person1을 나타냄
속성 (attribute)
속성은 객체가 가지는 특성을 나타낸다.
.
• 클래스 내부에서 self.속성명으로 정의하며, 각 객체는 고유한 속성을 가질 수 있습니다.
• 생성자에서 사용자가 입력한 값을 바탕으로 정의하기도 하고, 어떤 계산을 통해 얻어진 값을
바탕으로 정의하기도 합니다.
class Person:
def __init__(self, name, age):
self.name = name # 이름 속성 초기화
self.age = age # 나이 속성 초기화
person1 = Person("홍길동", 32)
print(person1.name) # 홍길동
print(person1.age) # 32
메서드 (method)
메서드는 객체가 수행할 수 있는 동작(기능)을 정의하는 클래스 내부 함수
class Calculator:
def __init__(self, value):
self.value = value # 초기 값 설정
def add(self, num):
self.value += num # 값 더하기 (x += v는 x = x + v와 같음)
return self.value
def subtract(self, num):
self.value -= num # 값 빼기
return self.value
calc = Calculator(10)
print(calc.add(5)) # 출력: 15
print(calc.subtract(3)) # 출력: 12
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
생각정리
클래스는 단순히 문법 요소가 아니라, 현실 세계의 개념을 코드로 모델링하는 강력한 도구라고 느꼈다. 특히 함수와 변수를 한 객체 안에 묶어 관리할 수 있기 때문에, 코드의 구조화와 재사용성이 크게 향상된다. 단순한 함수 집합으로만 프로그램을 구성하면 기능이 늘어날수록 관리가 복잡해지지만, 클래스를 활용하면 객체 단위로 관리할 수 있어 유지보수가 훨씬 용이하다는 점이 인상 깊었다. 또한 데이터 분석이나 머신러닝에서 모델을 객체로 다루는 방식은, “모델 = 속성과 메서드를 가진 클래스”라는 사고방식을 익히는 데 큰 도움이 될 것 같다.
적용점
- 개인 프로젝트
- 간단한 계산기, 학생 관리 시스템 등을 클래스로 구현하여, 속성(예: 이름, 점수)과 메서드(예: 평균 계산)를 묶어 관리한다.
- 데이터 분석
- 머신러닝 모델처럼 학습(fit), 예측(predict), 평가(score) 기능을 가진 클래스를 직접 구현해봄으로써 라이브러리 내부 동작을 더 잘 이해한다.
- 코드 확장성
- 기능 추가가 필요할 때 새로운 메서드를 추가하는 방식으로 확장하여, 코드 전체를 다시 작성하지 않고도 관리할 수 있도록 한다.
- 실습 아이디어
- Book 클래스를 정의해 제목, 저자 속성을 갖고, get_info() 메서드로 책 정보를 출력하도록 만들기.
- BankAccount 클래스를 만들어 입금, 출금, 잔액 조회 기능을 구현해보기.
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 02-1 (0) | 2025.09.21 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-7 (0) | 2025.09.21 |
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-5 (0) | 2025.09.19 |
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-4 (0) | 2025.09.18 |
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-3 (0) | 2025.09.17 |