Ch.2 Python 첫걸음 — 데이터를 다루다
클래스 — 데이터와 함수를 묶다
클래스로 데이터와 기능을 하나로 묶는다self의 역할을 이해한다
변수와 함수가 점점 많아지면?
프로젝트가 커지면 변수 수십 개, 함수 수십 개가 생깁니다. 관련된 것끼리 묶지 않으면 코드가 뒤죽박죽이 됩니다.
관련된 데이터와 기능을 깔끔하게 묶는 방법은?
클래스 — 데이터와 함수를 하나의 '설계도'로 묶습니다.
article
핵심 내용
PyTorch의 모든 AI 모델은 클래스로 만들어집니다. `class MyModel(nn.Module):` — 이 한 줄이 AI 모델의 시작이죠. 변수와 함수가 수십 개로 늘어나면, 관련된 것끼리 묶어야 합니다. 그 묶음의 설계도가 클래스입니다.
클래스는 데이터와 함수를 묶는 설계도입니다
class Tokenizer:
def __init__(self, name):
self.name = name
self.vocab = {}
def add_word(self, word):
if word not in self.vocab:
self.vocab[word] = len(self.vocab)
def vocab_size(self):
return len(self.vocab)class — 설계도 정의 __init__ — 초기화 (자동 호출) self — 현재 객체 자신
설계도로 실제 객체를 만들어봅시다
AI Tokenizer 클래스를 직접 만들고 사용해봅시다
# 나만의 Tokenizer 클래스 만들기!
class SimpleTokenizer:
def __init__(self, name):
self.name = name
self.vocab = {}
def add_word(self, word):
if word not in self.vocab:
self.vocab[word] = len(self.vocab)
def encode(self, text):
tokens = text.split()
return [self.vocab.get(w, -1) for w in tokens]
def vocab_size(self):
return len(self.vocab)
# 사용해보기!
tok = SimpleTokenizer("my-tokenizer")
# 단어 등록
for word in ["오늘", "날씨", "좋다", "내일", "도", "좋을까"]:
tok.add_word(word)
print(f"토크나이저: {tok.name}")
print(f"사전 크기: {tok.vocab_size()}")
print(f"사전: {tok.vocab}")
# 문장 인코딩
text = "오늘 날씨 좋다"
encoded = tok.encode(text)
print(f"\n'{text}' → {encoded}")클래스에서 self는 무엇을 가리키는가?
__init__ 메서드는 언제 실행되는가?
Python에서 딕셔너리의 키는 중복될 수 있다
클래스 기초
edit_note
정리 노트
클래스 — 데이터와 함수를 묶다
클래스 기본 구조
- class
- 데이터(속성)와 함수(메서드)를 묶는 설계도 정의 키워드
- __init__
- 생성자 — 인스턴스 생성 시 자동 호출되어 초기화
- self
- 현재 인스턴스 자신을 가리키는 참조 (메서드의 첫 번째 인자)
클래스 활용
- 인스턴스
- 설계도(클래스)로 만든 실제 객체 — tok = Tokenizer("basic")
- 메서드 호출
- 인스턴스.메서드() — tok.add_word("hello")
- AI 연결
- PyTorch 모든 AI 모델 = class MyModel(nn.Module):
★
클래스 = 붕어빵 틀, 인스턴스 = 실제 붕어빵 — 틀 하나로 여러 붕어빵 생산!
image
시각 자료
다이어그램: py-scene-class
check_circle
핵심 정리
- 1클래스 = 데이터 + 함수를 묶는 설계도
- 2self = 현재 객체 자신
- 3딕셔너리 키는 중복 불가
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작