-
Python 기초 : 클래스와 모듈BootCamp/FastCampus x Upstage AI Lab 6기 2024. 11. 19. 14:32
객체 지향 프로그래밍 소개
객체 지향 프로그래밍(Object Oriented Programming, OOP)은 프로그램을 객체라는 독립적인 단위로 나누어 설계하는 방법론이다.
OOP의 주요 특징:
- 코드 재사용 용이: 이미 작성된 코드를 재사용할 수 있어 효율적이다.
- 유지보수 용이: 프로그램의 수정 및 관리가 용이하다.
- 대형 프로젝트 적합: 대규모 소프트웨어 개발에 적합하다.
OOP의 단점:
- 실행 속도가 느림: 객체가 많아질수록 실행 속도가 저하될 수 있다.
- 프로그램 용량 증가: 객체 수가 많아지면 프로그램의 용량이 커진다.
- 설계 시간 소요: 초기 설계에 많은 시간이 필요하다.
클래스와 객체의 개념
- 클래스(Class)는 동일한 유형의 객체를 생성하기 위한 설계 도면이다.
- 예를 들어, 곰돌이 젤리를 만드는 틀로 비유할 수 있다.
- 객체(Object)는 클래스에 의해 생성된 모든 것을 의미한다.
- 각 객체는 고유한 성질을 가지며, 동일한 클래스에서 생성된 객체들은 서로 영향을 주지 않는다.
class TeddyBearJelly: # 클래스 선언 def __init__(self, color, taste): self.color = color # 속성 설정 self.taste = taste # 속성 설정
클래스 선언 및 인스턴스
- 클래스 선언은 class 키워드를 사용하여 이루어진다.
- 인스턴스(Instance)는 클래스 기반으로 만들어진 객체를 의미하며, 특정 객체가 어떤 클래스의 객체인지를 설명할 때 사용된다.
- 인스턴스를 생성하는 방법:
# 인스턴스 생성 yellow_jelly = TeddyBearJelly("yellow", "sweet") red_jelly = TeddyBearJelly("red", "sour") # 객체의 속성 출력 print("노란색 젤리 맛:", yellow_jelly.taste) print("빨간색 젤리 맛:", red_jelly.taste) # 실행 결과 # 노란색 젤리 맛: sweet # 빨간색 젤리 맛: sour
메소드와 생성자 설명
- 메소드(Method)는 클래스가 가지고 있는 함수를 의미하며, 클래스 내부의 함수는 첫 번째 매개변수로 반드시 self를 입력해야 한다.
- self는 호출한 객체 자신을 나타내며, 메소드를 정의할 때 사용된다.
- 생성자(Constructor)는 인스턴스가 생성될 때 자동으로 실행되는 함수로, __init__이라는 이름을 가진다.
- 생성자는 인스턴스의 생성과 동시에 필요한 정보를 입력받도록 구현된다.
# 2. 메소드와 생성자 class TeddyBearJelly: def __init__(self, color, taste): self.color = color self.taste = taste def describe(self): return f"This jelly is {self.color} and tastes {self.taste}." # 인스턴스 생성 및 메소드 호출 blue_jelly = TeddyBearJelly("blue", "berry-flavored") print(blue_jelly.describe()) # 실행 결과 # This jelly is blue and tastes berry-flavored.
상속의 개념과 활용
- 상속(Inheritance)은 새로운 클래스를 만들 때 기존 클래스의 기능을 물려받는 것을 의미한다.
- 부모 클래스(Parent Class)와 자식 클래스(Child Class) 개념:
- 부모 클래스는 상위 클래스, 자식 클래스는 하위 클래스를 의미한다.
- 상속의 장점:
- 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경할 수 있다.
- 메소드 오버라이딩(Method Overriding):
- 자식 클래스에서 부모 클래스의 메소드를 재정의하는 것을 의미한다.
- super() 키워드를 사용하여 부모 클래스의 메소드를 호출할 수 있다.
# 3. 상속의 개념과 활용 class Animal: # 부모 클래스 def speak(self): return "I make a sound." class Dog(Animal): # 자식 클래스 def speak(self): # 메소드 오버라이딩 return "Woof!" # 인스턴스 생성 및 메소드 호출 generic_animal = Animal() dog = Dog() print("Animal:", generic_animal.speak()) print("Dog:", dog.speak()) # 실행 결과 # Animal: I make a sound. # Dog: Woof!
모듈의 이해와 사용법
- 모듈은 여러 변수와 함수를 포함하는 집합으로, 파이썬에 기본적으로 내장된 내부 모듈과 외부에서 제공되는 외부 모듈이 있다.
- 내부 모듈 예시:
- math, random, datetime 등 다양한 기능을 제공하는 모듈이 있다.
- import 구문:
- import는 모듈 전체를 가져올 때 사용하며, from은 필요한 것만 선택하여 가져올 때 사용한다.
# 4. 모듈의 이해와 사용법 import math from random import randint # math 모듈 활용 radius = 5 area = math.pi * (radius ** 2) print(f"원의 넓이 (반지름 {radius}): {area:.2f}") # random 모듈 활용 random_number = randint(1, 10) print("랜덤 숫자:", random_number) # 실행 결과 # 원의 넓이 (반지름 5): 78.54 # 랜덤 숫자: (1부터 10 사이의 임의의 숫자)
예외 처리 기법
- 오류는 프로그램 실행 전에 발생하는 구문 오류와 실행 중에 발생하는 예외로 나뉜다.
- 예외 처리는 try와 except 구문을 사용하여 이루어진다.
- try 문 안에는 예외가 발생할 가능성이 있는 코드를 삽입하고, except 문 안에는 예외 발생 시 실행할 코드를 삽입한다.
- 예외 처리 기법:
- try - except 구문
- try - except - else 구문
- try - except - finally 구문
# 5. 예외 처리 기법 try: num = int(input("숫자를 입력하세요: ")) # 숫자로 변환 시도 print("입력된 숫자:", num) except ValueError: # 예외 발생 시 처리 print("유효하지 않은 입력입니다. 숫자를 입력해야 합니다.") finally: print("프로그램 종료.") # 실행 결과 (예: 사용자가 "abc"를 입력한 경우) # 숫자를 입력하세요: abc # 유효하지 않은 입력입니다. 숫자를 입력해야 합니다. # 프로그램 종료.
'BootCamp > FastCampus x Upstage AI Lab 6기' 카테고리의 다른 글
Python 기초 : Python Library(1)(Pandas, Numpy) (1) 2024.11.20 국민내일배움카드 훈련과정 출석 관리용 엑셀 (부트캠프 etc..) (0) 2024.11.19 Python 기초 : 입출력과 제어문 (2) 2024.11.18 Python 기초 : 변수와 자료형 (4) 2024.11.17 [Upstage AI Lab 6기] 마인드셋 특강 : 박기준 LXM님 후기 (4) 2024.11.16