본문 바로가기
카테고리 없음

파이썬 클래스 완벽 이해 - 객체지향 프로그래밍 시작하기

by chapter21 2025. 5. 24.

파이썬 클래스 완벽 이해 - 객체지향 프로그래밍 시작하기

파이썬으로 프로그램을 만들다 보면, 복잡한 데이터를 효율적으로 관리하고 코드를 깔끔하게 정리하는 것이 중요해집니다. 이럴 때 '클래스(Class)'와 '객체(Object)'라는 강력한 도구가 등장합니다. 클래스는 마치 '설계도'나 '붕어빵 틀'처럼 무언가를 만들기 위한 틀을 제공하고, 객체는 그 틀로 만들어진 '실제 물건'이나 '붕어빵'이라고 생각할 수 있습니다.

이번 강의에서는 파이썬 클래스의 기본적인 개념부터 실제 코드 예시를 통해 클래스를 정의하고, 객체를 생성하며, 속성(데이터)과 메서드(기능)를 사용하는 방법을 상세히 배워보겠습니다. 객체지향 프로그래밍(OOP)의 첫걸음을 떼는 이 시간을 통해 여러분의 프로그래밍 실력을 한 단계 더 발전시킬 수 있을 것입니다.

클래스(Class)와 객체(Object)는 무엇일까요?

클래스는 특정 종류의 '물건'을 만들 때 필요한 '설계도'나 '청사진'입니다. 예를 들어, 우리가 자동차를 만든다고 생각해봅시다.
모든 자동차는 색깔, 모델, 최고 속도 등의 정보(속성)를 가지고 있고, 시동을 걸거나 가속하는 등의 동작(메서드)을 할 수 있습니다. 이 자동차의 공통적인 특징과 동작을 정의해 놓은 것이 바로 '자동차 클래스'입니다.


그렇다면 '객체'는 무엇일까요? 객체는 이 설계도(클래스)를 바탕으로 실제로 만들어진 각각의 '자동차'입니다. 빨간색 세단 자동차, 파란색 SUV 자동차처럼 실제 존재하는 모든 개별적인 자동차들이 바로 '객체'입니다.
파이썬에서는 이렇게 현실 세계의 사물이나 개념을 컴퓨터 프로그램으로 표현하기 위해 클래스와 객체를 사용하며, 이를 '객체지향 프로그래밍(Object-Oriented Programming, OOP)'이라고 부릅니다.

클래스 정의와 객체 생성하기

가장 먼저, 비어 있는 클래스를 정의하고 이를 바탕으로 객체를 만들어 보겠습니다. 파이썬에서 클래스를 정의할 때는 class 키워드를 사용합니다. 클래스 이름은 보통 첫 글자를 대문자로 시작하는 것이 파이썬의 관례입니다.

Python
# Car라는 이름의 비어 있는 클래스를 정의합니다. class Car: # pass는 아무것도 하지 않는다는 의미입니다. pass # Car 클래스의 객체(인스턴스)를 생성합니다. my_car = Car() your_car = Car() # 생성된 객체의 타입을 출력해봅니다. print(my_car) print(your_car)

위 코드를 실행하면 다음과 같은 결과가 화면에 나타납니다. 각 객체가 고유한 메모리 주소를 가지고 있음을 볼 수 있습니다.

출력 결과
<__main__.Car object at 0x...> <__main__.Car object at 0x...>

클래스에 속성(Attributes) 추가하기

이제 클래스에 속성을 추가하여 객체가 특정 데이터를 가질 수 있도록 만들어 보겠습니다. 속성은 객체의 '상태'나 '특징'을 나타내는 값입니다. 이를 위해 __init__이라는 특별한 메서드를 사용합니다. 이 메서드는 객체가 만들어질 때(생성될 때) 자동으로 호출되므로 '생성자(Constructor)'라고 부르기도 합니다.

__init__ 메서드의 첫 번째 매개변수는 항상 self로 지정해야 합니다. self는 현재 만들어지고 있는 '자기 자신' 객체를 가리킵니다. 이를 통해 객체마다 고유한 속성 값을 가질 수 있습니다.

Python
# Car 클래스에 color와 model 속성을 추가합니다. class Car: # __init__ 메서드는 객체가 생성될 때 자동으로 호출됩니다. def __init__(self, color, model): self.color = color # 객체 자신의 color 속성에 전달받은 color 값을 저장합니다. self.model = model # 객체 자신의 model 속성에 전달받은 model 값을 저장합니다. # 각기 다른 속성을 가진 Car 객체들을 생성합니다. my_car = Car("빨간색", "세단") your_car = Car("파란색", "SUV") # 객체의 속성에 접근하여 출력해봅니다. print(f"내 차는 {my_car.color} {my_car.model}입니다.") print(f"당신 차는 {your_car.color} {your_car.model}입니다.")

위 코드를 실행하면 다음과 같은 결과가 화면에 나타납니다. 각 객체가 고유한 색상과 모델 정보를 가지고 있음을 확인할 수 있습니다.

출력 결과
내 차는 빨간색 세단입니다. 당신 차는 파란색 SUV입니다.

클래스에 메서드(Methods) 추가하기

속성이 객체의 '데이터'라면, 메서드는 객체가 수행할 수 있는 '행동' 또는 '기능'입니다. 메서드는 클래스 내부에 정의된 함수와 같다고 생각할 수 있습니다. 메서드 역시 첫 번째 매개변수로 self를 가집니다. 이를 통해 메서드 안에서 객체의 속성에 접근하거나 다른 메서드를 호출할 수 있습니다.

Python
# Car 클래스에 accelerate와 brake 메서드를 추가합니다. class Car: # 생성자: 객체가 만들어질 때 호출됩니다. def __init__(self, color, model): self.color = color self.model = model self.speed = 0 # 초기 속도를 0으로 설정합니다. # 가속하는 메서드 def accelerate(self, amount): self.speed += amount print(f"{self.color} {self.model}이(가) {amount}만큼 가속하여 현재 속도: {self.speed} km/h") # 감속하는 메서드 def brake(self, amount): self.speed -= amount if self.speed < 0: self.speed = 0 print(f"{self.color} {self.model}이(가) {amount}만큼 감속하여 현재 속도: {self.speed} km/h") # Car 객체를 생성합니다. my_car = Car("초록색", "스포츠카") # 메서드를 호출하여 객체의 행동을 실행합니다. my_car.accelerate(50) my_car.accelerate(30) my_car.brake(40) my_car.brake(60)

위 코드를 실행하면 다음과 같은 결과가 화면에 나타나며, 객체가 스스로 속성을 변경하고 동작하는 것을 볼 수 있습니다.

출력 결과
초록색 스포츠카이(가) 50만큼 가속하여 현재 속도: 50 km/h 초록색 스포츠카이(가) 30만큼 가속하여 현재 속도: 80 km/h 초록색 스포츠카이(가) 40만큼 감속하여 현재 속도: 40 km/h 초록색 스포츠카이(가) 60만큼 감속하여 현재 속도: 0 km/h

중요: self 매개변수

self는 클래스의 메서드를 정의할 때 항상 첫 번째 매개변수로 명시되어야 합니다. 이것은 메서드가 호출될 때 해당 메서드를 호출한 '객체 자신'을 가리키기 때문에, 메서드 내부에서 그 객체의 속성이나 다른 메서드에 접근할 수 있게 해줍니다. 실제 메서드를 호출할 때는 self를 따로 넘겨줄 필요는 없습니다 (예: my_car.accelerate(50)).

주의: 클래스 이름 규칙

파이썬에서는 클래스 이름을 정의할 때 보통 각 단어의 첫 글자를 대문자로 쓰는 '카멜 케이스(CamelCase)' 방식을 따릅니다 (예: MyCar, HouseHoldAppliance). 이는 파이썬 개발자들이 널리 사용하는 관례이므로 따라주는 것이 좋습니다.

핵심 : 클래스는 객체를 만들기 위한 '설계도'이며, 객체는 그 설계도에 따라 만들어진 '실제 사물'입니다. 객체는 속성(데이터)과 메서드(행동)를 가집니다. __init__ 메서드는 객체 생성 시 속성을 초기화하며, self는 메서드 내에서 객체 자신을 가리킵니다.

마무리 요약

이번 강의에서는 파이썬 클래스의 가장 기본적인 개념과 사용법을 알아보았습니다. 클래스를 정의하고, 그로부터 객체를 생성하며, 객체가 가지는 속성과 행동을 정의하는 메서드를 구현해 보았습니다. 객체지향 프로그래밍은 프로그램을 현실 세계의 문제에 더 가깝게 모델링하고, 코드를 모듈화하여 관리하기 쉽게 만드는 강력한 방법입니다.

이제 여러분은 파이썬 객체지향 프로그래밍의 기초를 다졌습니다. 다음 강의에서는 객체지향 프로그래밍의 핵심 원리인 '상속(Inheritance)'과 '다형성(Polymorphism)'에 대해 더 깊이 알아보며, 클래스의 활용 범위를 넓혀나갈 것입니다.

클래스와 객체에 대해 더 궁금한 점이 있다면 언제든지 댓글로 질문을 남겨주세요!

다음 강의에서는 클래스의 재활용, 즉 상속에 대해 다룰 예정이니 꼭 확인해주세요!