연재 데이터 항해 훈련 일지

약 1분

클래스로 상태와 행동을 묶어 배우는 객체지향

데이터(상태)와 기능(행동)을 하나로 묶는 객체지향의 감각을 잡았다. Person·BankAccount·Student 같은 예제로 클래스·생성자·메서드·인스턴스 변수를 익혔다.

TrainingPythonOOP

흩어진 데이터를 하나로 묶기

지금까지는 변수와 함수가 따로 놀았다. 클래스는 관련된 데이터(상태)와 그 데이터를 다루는 함수(행동)를 하나의 틀로 묶는다. 이 관점이 잡히니 코드가 훨씬 정돈됐다.

생성자와 인스턴스 변수

class Person:
    def __init__(self, name):
        # 객체가 만들어질 때 이름을 받아 이 객체 고유의 변수에 저장
        self.name = name
 
    def introduce(self):
        print(f"저는 {self.name}입니다")
 
p = Person("민수")
p.introduce()

__init__ 은 객체가 태어날 때 한 번 실행되는 생성자, self 는 "이 객체 자신"을 가리킨다. 인스턴스를 두 개 만들어 서로의 상태가 독립적이라는 걸 확인하고 나서야 감이 왔다.

실전 클래스들

  • Counter: value를 0에서 시작해 inc() 마다 증가 — 인스턴스마다 독립적인 상태
  • Rectangle: area(), perimeter() 로 넓이·둘레 반환
  • BankAccount: deposit(), withdraw() — 그리고 잔액이 부족하면 출금을 막는 방어 로직까지
  • Student: 점수 리스트를 받아 average() 로 평균 계산
  • Todo: done을 False로 시작해 finish() 로 완료 처리

정리