본문 바로가기

프로그래밍/AI

[자료구조] 파이썬 객체지향과 모듈

 

파이썬을 객체지향적과
패키지 기능에 대한 기초 개념

https://coding-kindergarten.tistory.com/17

 


# 파이썬 객체 지향 프로그래밍 

  • 개요 
    • 대부분의 도구 들이 객체 지향 기법(OOP)으로 작성됨 
    • 객체는 속성(init, 매직 메소드)과 행동(def)을 가짐 
  • 변수와 클래스 이름 규칙 
    • 파이썬 함수/변수명 : 띄워쓰기 부분에 "_"를 추가 
    • 클래스 명 : 띄워쓰기 부분에 대문자 사용 / 첫문자 대문자
  • Attribute 
    • "__" 의미 : 특수한 예약 함수 ; __main__, __str__ 등
    • __init__ : 객체 초기화 예약 함수 
    • __str__ , __add__ : 매직 메소드(자동 호출됨, 클래스 기본 속성)의 하나 ; 객체를 표현하는 방식을 정의
  • 상속 (Inheritance) 
    • 정의 : 부모클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성
    • super() : 자기 자신의 부모 클래스의 속성 값을 사용 (+함수 재사용) 
  • 다형성 (Polymorphism) 
    • 정의 : 같은 이름 메소드의 내부 로직을 다르게 작성 (상속 or 다르게 사용) -> 같은 이름 - 다른 사용
    • 서로 다른 클래스를 정의 할 때 공통 속성을 정의한 클래스를 상속 받음 
  • 캡슐화 또는 정보 은닉
    • 정의 : Class를 설계할떄, 클래스 간 간섭/정보공유의 최소화 
    • private 내부 변수 정의(__variable) : 외부에서 접근 불가능 ; 객체 추가 및 확인 불가 
    • @property decorator를 추가해서 내부에서 접근 가능하도록 함. -> 일반적으론 copy 를 통해 사용하도록 처리 
  • Decorator 
    • First-class object (일급 객체)
      • 함수를 파라미터로 사용 or 함수를 리턴 값으로 사용 가능 객체 : 파이썬 지원
      • Inner function(closure) : 함수 내부에 함수 정의 가능 (= 함수 객체를 리턴값으로 사용) 
    • Decorator function 
      • 정의 : 함수 본질의 기능을 유지하면서 객체 출력에서의 추가적인 기능을 장식 (기능 추가, 동작 변경)
      • @기호를 함수 위에 붙임 : 데코레이터 적용 방법
      • @my_decorator를 함수 위에 붙이는 것은 my_function = my_decorator(my_function)

# 모듈과 프로젝트 

  • 모듈
    • 정의 : 프로그램에서의 작은 프로그램 조각 -> 모으면 하나의 큰 프로그램 
    • 모듈 == py 파일임 
    • import function_name as alias
      • 모듈의 모든 모듈 불러옴 (alias.function) 으로 사용
      • 함수의 출처를 표기해주는 것이 좋음 (모든 함수 불러오기 x) 
  • 패키지
    • 패키지 : 모듈을 모아 놓은 단위.
    • 각각의 폴더에 필요한 모듈을 구현함. (기능 단위 구분) 
    • from <폴더이름> import <py파일이름>
    • 패키지를 만든다는 것은 큰 문서 작업을 하는 것과 같다. 
    • 각 폴터 내에 __init__.py 폴터를 생성 
      • 패키지 임을 알려줌 (python 3.3+ 이후 필수 아님) 
      • __all__ = ["모듈이름1", "모듈이름2"].  ex)모듈이름.py
      • from . import <모듈 이름>
  • __pychache__/
    • 정의 : 내 폴더를 컴파일 시켜놓은 것 (빠르게 불러오도록)
  • 참조 
    • import : 절대 참조 
    • from .<폴더> import : 현재 디렉터리 기준 폴더(패키지) 참조
    • from ..<폴더> import : 부모 디렉토리 기준 폴더(패키지) 참조

 

'프로그래밍 > AI' 카테고리의 다른 글

[DB] MongoDB Atlas  (0) 2025.12.13
[DB] SQL vs NoSQL (feat.MongoDB)  (1) 2025.12.13
[meow] 데이터셋 및 모델 자체 평가  (2) 2025.06.29
[meow] Bert-score : 문장 간 의미 유사도 평가  (3) 2025.06.17
[LLM] Llama1 살펴보기  (1) 2025.06.10