PYTHON(2)

chiwon·2025년 8월 4일
post-thumbnail

🐍 파이썬 클래스 및 객체 지향 정리

📌 객체

  • 파이썬에서 다룰 수 있는 모든 것들
  • 객체는 '속성'과 '행동'으로 구성됨

🧱 클래스

  • 타입을 표현하는 방법 / 객체를 생성하기 위한 설계도
  • 클래스로 만든 객체를 인스턴스라고 함
  • 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() 사용 시 주의점

0개의 댓글