기본개념 복습
절차지향프로그래밍 시대에서 큰 프로그램을 잘 관리하기 위하여 객페지향으로 진화!
객체지향은 작은단위로 나누어 각각을 독립적으로 관리하기 때문에 유지보수가 편하고, 사람이 이해하기 쉬움.
예를 들어,
가방을 만들어내는 설계도(클래스)가 하나 있으면 여러개의 가방(객체)을 대량 생산할 수 있다. 또한 만들어진 가방A에 빨간색을 칠해도 가방B에는 아무 영향이 없다. (각 객체는 독립적임)
https://youtu.be/uIcK7-YU8uA?si=mP-7ItDfBJdBkEZ8
이 영상에서 쉽게 배울 수 있었다.
사진처럼 각각의 변수를 한 덩어리에 묶어 놓을 수 있음!

class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return f"{self.name}가 짖습니다."
def introduce(self):
return f"이름: {self.name}, 품종: {self.breed}"
1. 매직메서드
대표적인 매직 메서드
+ 연산자를 재정의할 수 있음.== 연산자를 재정의함2. 클래스 메서드와 정적 메서드
클래스 메서드(Class Method)
클래스 메서드는 클래스 자체를 인수로 받는 메서드로, 클래스 변수를 다루거나, 클래스 자체에 대한 작업을 수행할 때 사용. 클래스 메서드는 @classmethod 데코레이터를 사용해 정의하며, 첫 번째 매개변수로 cls를 받습니다. cls는 클래스 자신을 참조.
정적 메서드(Static Method)
정적 메서드는 클래스나 객체와는 관련이 없지만, 클래스의 맥락에서 의미가 있는 메서드. 정적 메서드는 @staticmethod 데코레이터를 사용해 정의하며, 첫 번째 매개변수로 self나 cls를 받지 않음.
3. 상속(Inheritance)
상속(Inheritance)은 기존 클래스(부모 클래스)의 속성과 메서드를 새로운 클래스(자식 클래스)가 물려받아 사용하는 개념. 상속을 통해 코드의 재사용성을 높이고, 기존 기능을 확장하거나 수정할 수 있음.
상속의 장점
- 코드 재사용
- 유지보수성
- 확장성