🐍 파이썬 클래스 및 객체 지향 정리
📌 객체
- 파이썬에서 다룰 수 있는 모든 것들
- 객체는 '속성'과 '행동'으로 구성됨
🧱 클래스
- 타입을 표현하는 방법 / 객체를 생성하기 위한 설계도
- 클래스로 만든 객체를 인스턴스라고 함
123은 정수 클래스의 인스턴스, 'abc'는 문자열 클래스의 인스턴스
- 인스턴스에서 특정 속성에 접근하면
인스턴스 → 클래스 순으로 탐색
🔨 클래스 정의
class Person:
blood_color = 'red'
def __init__(self, name):
self.name = name
def singing(self):
return f'{self.name}가 노래합니다.'
singer1 = Person('iu')
print(singer1.singing())
print(singer1.blood_color)
🧩 클래스 구성 요소
| 구성 요소 | 설명 |
|---|
생성자 메서드 __init__ | 인스턴스 생성 시 자동 호출 |
| 인스턴스 변수 | 인스턴스 고유 데이터 저장 |
| 클래스 변수 | 클래스 전체 공유 변수 |
| 인스턴스 메서드 | 인스턴스에서 호출 가능한 함수 (첫 인자: self) |
| 클래스 메서드 | 클래스에서 호출 가능한 함수 (첫 인자: cls) |
| 정적 메서드 | 클래스, 인스턴스 상관 없이 동작 (첫 인자 없음) |
@classmethod
def number_of_population(cls):
print(f'인구수는 {cls.count}입니다.')
🧬 상속 (Inheritance)
✅ 기본 상속
class Professor(Person):
pass
✅ 다중 상속
- 상속 우선 순위는 MRO(Method Resolution Order)로 결정
- 확인:
print(SubClass.__mro__)
- 중복 메서드는 상속 순서 기준
- 부모 메서드 호출:
super()
🪄 클래스 참고 개념
🎁 데코레이터
- 기존 함수를 수정하지 않고 기능을 추가할 수 있는 문법
✨ 매직 메서드
__init__, __str__, __len__ 등
- 특정 상황에 자동 호출
🔍 정규 표현식
- 문자열에서 특정 패턴을 찾는 기법
re 모듈 사용 (import re)
♻️ 제너레이터 (Generator)
- 반복 가능한 객체를 생성하는 함수
yield 사용
- 메모리 효율적
def count_up():
i = 0
while True:
yield i
i += 1
🧯 예외 처리
try:
except ValueError:
else:
finally:
📦 모듈과 패키지
🔹 모듈
- 하나의
.py 파일 = 모듈
- import로 불러올 수 있음
import math
print(math.sqrt(4))
from math import sqrt
print(sqrt(4))
🔹 패키지
- 모듈들을 묶어놓은 폴더
- pip로 설치 가능 (
pip install requests 등)
📂 파일 읽기
with open('example.txt', 'r', encoding='utf-8') as file:
data = file.read()
print(data)
- 읽기 모드:
r
- 메서드:
read(), readline(), readlines()
❓ 질문 정리
- 다중 상속 및 MRO
- 클래스 변수 vs 인스턴스 변수
super() 사용 시 주의점