실버를 위한 코딩/파이썬
객체 지향 프로그램의 핵심, 클래스(class)
forSilver
2024. 12. 4. 04:06
반응형
객체 지향 프로그램의 핵심, 클래스(class)
파이썬에서 클래스(class)는 객체 지향 프로그래밍(OOP, Object-Oriented Programming)의 핵심 개념입니다. 클래스는 데이터와 해당 데이터를 처리하는 메서드를 한 곳에 묶어 객체(object)를 정의하는 데 사용됩니다.
1. 클래스 기본 구조
class 클래스이름:
def __init__(self, 속성1, 속성2):
self.속성1 = 속성1
self.속성2 = 속성2
def 메서드(self):
# 동작 정의
pass
주요 키워드
class
: 클래스를 정의하는 키워드.__init__
: 클래스의 생성자(Constructor)로, 객체를 생성할 때 초기화하는 메서드.self
: 인스턴스 자기 자신을 가리키는 매개변수로, 클래스 내 메서드의 첫 번째 매개변수로 사용.
2. 클래스와 객체
예제
class Person:
def __init__(self, name, age):
self.name = name # 이름 속성
self.age = age # 나이 속성
def greet(self):
print(f"안녕하세요, 저는 {self.name}이고, {self.age}살입니다.")
# 객체 생성
person1 = Person("홍길동", 30)
person2 = Person("김영희", 25)
# 메서드 호출
person1.greet() # 안녕하세요, 저는 홍길동이고, 30살입니다.
person2.greet() # 안녕하세요, 저는 김영희이고, 25살입니다.
3. 클래스의 주요 특징
(1) 속성
- 객체에 저장되는 데이터.
- 클래스 내부의
__init__
메서드를 통해 정의. - 속성은
self.속성이름
형식으로 접근.
(2) 메서드
- 객체가 실행할 수 있는 함수.
self
를 첫 번째 매개변수로 가져야 함.
(3) 상속
- 클래스의 재사용성을 높이기 위해 다른 클래스를 기반으로 새로운 클래스를 정의.
class Animal:
def __init__(self, species):
self.species = species
def sound(self):
print("소리를 냅니다.")
class Dog(Animal): # Animal 클래스를 상속받음
def __init__(self, name):
super().__init__("강아지") # 부모 클래스의 생성자 호출
self.name = name
def sound(self):
print("멍멍!")
dog = Dog("바둑이")
dog.sound() # 멍멍!
(4) 캡슐화
- 객체의 속성을 외부에서 직접 접근하지 못하게 보호하는 개념.
- 변수명을
_변수명
또는__변수명
으로 작성.
class BankAccount:
def __init__(self, balance):
self.__balance = balance # 비공개 속성
def deposit(self, amount):
self.__balance += amount
def get_balance(self):
return self.__balance
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance()) # 1500
# print(account.__balance) # 에러: AttributeError 발생
4. 실습 과제
다음의 요구사항에 맞는 클래스를 작성해 보세요.
- 요구사항
Car
클래스를 작성하세요.- 이 클래스는 차량의 브랜드, 모델명, 연식을 속성으로 가집니다.
drive()
메서드를 호출하면 "브랜드의 모델명이 주행 중입니다."라는 메시지를 출력합니다.
- 예상 결과
5. 형성 평가
- 클래스와 객체의 차이를 간략히 설명하세요.
- 클래스의
__init__
메서드의 역할은 무엇인가요? - 상속이란 무엇이며, 파이썬에서 어떻게 구현하나요?
형성 평가 답변
1. 클래스와 객체의 차이
- 클래스: 객체를 만들기 위한 설계도입니다. 속성과 메서드를 정의하며, 이를 기반으로 객체를 생성합니다.
- 객체: 클래스를 이용해 만들어진 실체로, 실제 데이터와 메서드를 포함하여 동작합니다. 클래스는 추상적이고, 객체는 구체적입니다.
- 예:
Dog
라는 클래스는 개를 설명하는 설계도이고,my_dog = Dog()
는 실제 개를 나타내는 객체입니다.
- 예:
2. 클래스의 __init__
메서드의 역할
- 역할: 클래스의 생성자(Constructor)로, 객체가 생성될 때 자동으로 호출되어 초기화를 담당합니다.
- 기능: 객체의 속성(필드)을 정의하고 초기 값을 설정합니다.
- 예제:
class Person: def __init__(self, name, age): self.name = name # 이름 속성 초기화 self.age = age # 나이 속성 초기화
3. 상속이란 무엇이며, 파이썬에서 어떻게 구현하나요?
- 상속(Inheritance):
- 기존 클래스(부모 클래스, Superclass)의 속성과 메서드를 물려받아 새로운 클래스(자식 클래스, Subclass)를 정의하는 방법입니다.
- 코드 재사용과 유지보수를 용이하게 합니다.
- 파이썬에서 구현:
- 자식 클래스는 부모 클래스를 괄호 안에 명시하여 정의합니다.
- 예:
class Animal: def sound(self): print("소리를 냅니다.") class Dog(Animal): # Animal 클래스를 상속받음 def sound(self): # 메서드 오버라이딩 print("멍멍!") dog = Dog() dog.sound() # 출력: 멍멍!
- 키워드:
super()
를 사용하면 부모 클래스의 메서드를 호출할 수 있습니다.