1. 클래스
- 클래스는 데이터와 기능을 하나의 논리적인 단위로 묶기 위해 필요하다.
- 객체 지향 프로그래밍에서 데이터를 구조화하고 관련 메서드를 함께 정의하여 코드의 재사용성과 유지보수를 쉽게 만든다.
- 클래스는 객체의 설계도이다.
- 클래스는 여러 개의 객체를 생성할 수 있는 틀 역할을 한다.
- 객체는 클래스에 의해 생성된 구체적인 인스턴스를 말한다.
# 클래스와 객체 예시
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
my_dog = Dog("Buddy", 3)
print(my_dog.name) # 출력: Buddy
- 생성자(__init__ 메서드)는 객체가 생성될 때 자동으로 호출되는 메서드이다.
- 객체의 초기 상태를 설정하는 역할을 한다.
# 생성자 예시
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
my_car = Car("Toyota", "Corolla")
print(my_car.brand) # 출력: Toyota
- 상속은 기존 클래스의 속성과 메서드를 새로운 클래스에서 사용할 수 있게 해 준다.
- 이를 통해 코드를 재사용하고 클래스 간의 관계를 쉽게 표현할 수 있다.
# 클래스 상속 예시
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
dog = Dog("Rex")
print(dog.speak()) # 출력: Woof!
- 메서드 오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것이다.
- 이를 통해 자식 클래스에서 부모 클래스와 다른 동작을 구현할 수 있다.
# 메서드 오버라이딩 예시
class Bird(Animal):
def speak(self):
return "Chirp!"
bird = Bird("Tweety")
print(bird.speak()) # 출력: Chirp!
- 클래스 변수는 클래스 자체에 속한 변수로, 모든 인스턴스가 공유한다.
- 인스턴스 변수와는 달리, 클래스 전체에서 공통적으로 사용되는 데이터를 정의할 때 사용한다.
# 클래스 변수 예시
class Student:
school_name = "ABC High School"
def __init__(self, name, grade):
self.name = name
self.grade = grade
student1 = Student("Alice", 10)
student2 = Student("Bob", 11)
print(student1.school_name) # 출력: ABC High School
print(student2.school_name) # 출력: ABC High School
2. 모듈
- 모듈은 파이썬 파일(.py)로, 관련된 함수나 클래스를 모아둔 것이다.
- 다른 파이썬 파일에서 쉽게 가져다 쓸 수 있다.
# my_module.py
def greet(name):
return f"Hello, {name}!"
- if __name__ == "__main__"
- 이 구문은 모듈이 직접 실행될 때와 다른 파일에서 import 될 때의 동작을 구분하기 위해 사용한다.
- 모듈이 직접 실행될 때만 특정 코드가 실행되도록 한다.
# my_module.py
if __name__ == "__main__":
print(greet("Alice"))
- 모듈은 함수뿐만 아니라 클래스와 변수를 포함할 수 있다.
# my_module.py
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
year = 2023
- 모듈을 가져오려면 import 키워드를 사용한다.
- 모듈을 불러와 그 안의 함수나 클래스를 사용할 수 있다.
# main.py
import my_module
print(my_module.greet("Bob"))
- 다른 디렉터리에 있는 모듈을 불러오려면 해당 디렉터리를 파이썬 경로에 추가해야 한다.
- 이를 위해 sys 모듈을 사용할 수 있다.
# main.py
import sys
sys.path.append("/path/to/module")
import my_module
3. 패키지
- 패키지는 여러 모듈을 묶은 것이다.
- 패키지는 디렉터리로 표현되며, 해당 디렉터리에는 __init__. py 파일이 포함되어야 한다.
# 디렉터리 구조
my_package/
__init__.py
module1.py
module2.py
- 패키지 안에 있는 모듈의 함수를 실행하려면 import를 통해 접근할 수 있다.
# main.py
from my_package import module1
module1.some_function()
- __init__.py 파일은 해당 디렉터리가 패키지의 일부임을 파이썬에 알리는 역할을 한다.
- 파일 내에서 초기화 코드나 패키지 수준의 변수를 정의할 수도 있다.
- 패키지 내부에서 상대 경로를 사용해 다른 모듈을 불러올 수 있다.
- .이나.. 을 사용하여 현재 또는 부모 디렉터리를 나타낸다.
# module2.py
from . import module1
4. 예외 처리
- 프로그래밍 중 예기치 않은 상황에서 오류가 발생한다.
- 예를 들어, 존재하지 않는 파일을 열거나 0으로 나누려 할 때 오류가 발생한다.
- try와 except를 사용해 오류를 처리할 수 있다.
- 오류가 발생하더라도 프로그램이 강제 종료되지 않게 한다.
# 예외 처리 예시
try:
result = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
- 특정 상황에서 오류를 무시하고 넘어가고자 할 때 pass 키워드를 사용할 수 있다.
# 오류 회피 예시
try:
result = 10 / 0
except ZeroDivisionError:
pass
- raise 키워드를 사용해 의도적으로 오류를 발생시킬 수 있다.
# 오류 발생 예시
raise ValueError("잘못된 값입니다.")
- 사용자 정의 예외를 만들려면 Exception 클래스를 상속받아 새로운 예외 클래스를 정의한다.
# 사용자 정의 예외 예시
class MyError(Exception):
def __init__(self, message):
self.message = message
try:
raise MyError("이것은 사용자 정의 예외입니다.")
except MyError as e:
print(e)
'IT & AI > AI 지식' 카테고리의 다른 글
C 언어 연산자와 제어문 총정리 (0) | 2024.11.18 |
---|---|
C 언어 기본 개념과 프로그램 구조, 변수, 상수, 데이터 입력과 출력 (1) | 2024.11.17 |
파이썬 활용 (2): 클로저, 제너레이터, 정규 표현식 (2) | 2024.11.15 |
파이썬(Python) 제어문과 입출력 정리 (1) | 2024.11.14 |
파이썬(Python) 자료형과 변수 쉽게 배우기 (1) | 2024.11.13 |