728x90
728x90
파이썬 클래스 정의와 객체 생성: 상세 가이드
클래스란 무엇일까요?
**클래스(Class)**는 객체 지향 프로그래밍에서 새로운 데이터 타입을 정의하는 틀입니다. 마치 설계도처럼, 클래스는 객체들이 가져야 할 **속성(attribute)**과 수행할 수 있는 **행동(method)**을 미리 정의해 놓습니다.
쉽게 말해, 클래스는 **"무엇을 만들 것인가"**를 정의하고, **객체(Object)**는 **"실제로 만들어진 것"**입니다. 예를 들어, '자동차'라는 클래스를 정의하면, 이 클래스를 바탕으로 '현대 쏘나타', '벤츠 E클래스'와 같은 다양한 자동차 객체를 만들 수 있습니다.
클래스 정의하기
파이썬에서 클래스는 class 키워드를 사용하여 정의합니다.
class 클래스이름:
# 클래스 몸체 (속성과 메서드 정의)
- 클래스 이름: 클래스를 식별하기 위한 이름입니다.
- 클래스 몸체: 클래스의 속성과 메서드를 정의하는 부분입니다.
예시: 자동차 클래스
class Car:
def __init__(self, color, max_speed):
self.color = color
self.max_speed = max_speed
def run(self):
print("자동차가 달립니다.")
위 코드는 'Car'라는 클래스를 정의합니다.
- __init__: 생성자 메서드로, 객체가 생성될 때 자동으로 호출되어 객체의 초기 상태를 설정합니다.
- color, max_speed: 객체의 속성입니다. 각 객체는 고유한 색깔과 최고 속도를 가질 수 있습니다.
- run: 객체의 메서드입니다. 이 메서드를 호출하면 "자동차가 달립니다."라는 메시지를 출력합니다.
객체 생성하기
클래스를 정의한 후에는 클래스 이름 뒤에 괄호 ()를 붙여 객체를 생성할 수 있습니다. 이를 인스턴스화라고 합니다.
my_car = Car("빨간색", 200)
위 코드는 'Car' 클래스를 이용하여 'my_car'라는 이름의 객체를 생성하고, 이 객체의 색깔을 "빨간색", 최고 속도를 200으로 설정합니다.
객체의 속성과 메서드 사용하기
생성된 객체는 점(.) 연산자를 사용하여 속성에 접근하거나 메서드를 호출할 수 있습니다.
print(my_car.color) # 객체의 색깔 출력
my_car.run() # 객체의 run 메서드 호출
728x90
좀 더 자세히 알아보기
- self: 메서드 내에서 self는 자신을 가리키는 특별한 변수입니다. 메서드를 호출할 때 자동으로 전달되며, 객체의 속성에 접근하거나 다른 메서드를 호출하는 데 사용됩니다.
- 생성자 (init): 객체가 생성될 때 자동으로 호출되는 메서드입니다. 객체의 초기 상태를 설정하는 데 사용됩니다.
- 메서드: 객체가 수행할 수 있는 행동을 정의하는 함수입니다.
- 속성: 객체가 가지고 있는 데이터입니다.
왜 클래스를 사용할까요?
- 코드 재사용: 클래스를 한 번 정의하면 다양한 객체를 생성하여 코드를 재사용할 수 있습니다.
- 코드 관리: 복잡한 프로그램을 작은 단위로 나누어 관리하기 쉽습니다.
- 데이터 은닉: 객체 내부의 데이터를 외부에서 직접 접근하지 못하도록 보호할 수 있습니다.
- 객체 지향 프로그래밍: 현실 세계의 개념을 프로그램으로 모델링하기 쉽습니다.
예시: 학생 클래스
class Student:
def __init__(self, name, age, grade):
self.name = name
self.age = age
self.grade = grade
def study(self):
print(f"{self.name} 학생이 열심히 공부합니다.")
def introduce(self):
print(f"안녕하세요, 저는 {self.name}이고, {self.age}살입니다.")
# 학생 객체 생성
student1 = Student("홍길동", 20, 4)
student2 = Student("김철수", 22, 3)
# 메서드 호출
student1.study()
student2.introduce()
결론
클래스는 객체 지향 프로그래밍의 핵심 개념입니다. 클래스를 잘 이해하고 활용하면 더욱 효율적이고 유지보수가 용이한 프로그램을 개발할 수 있습니다.
728x90
728x90
'Python을 배워보자 > 6. 객체 지향 프로그래밍 (OOP)' 카테고리의 다른 글
파이썬 특별 메소드 생성자와 소멸자 (0) | 2024.09.25 |
---|---|
파이썬 상속 다형성 (0) | 2024.09.25 |
파이썬 부모 클래스와 자식 클래스 (0) | 2024.09.25 |
파이썬 클래스 메소드와 속성 (0) | 2024.09.25 |