Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (1)
language
python

Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (1)

Jay Kim
Jay Kim 01 May 2022
Python Advanced Series [Part5]: Code Documenting Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (2)

Table of Contents

  • 객체 지향 프로그래밍
  • 클래스
    • 객체
    • 속성
    • 메서드
  • 친절한 클래스 되기

객체 지향 프로그래밍

  • 프로그램은 “여러 독립된 객체들 간의 상호작용” 이라는 관점
  • 객체는 클래스를 통해 정의된다
  • 파이썬의 모든 것은 객체다

  • 객체지향 프로그래밍의 가장 큰 장점은 유지/보수가 쉽고, 확장성이 뛰어나다는 것이다
  • 거대한 하나의 프로그램을 객체지향 방식으로 프로그래밍 하기 위해서는 지켜야할 원칙이 있다. 이를 SOLID 원칙이라고 한다

클래스

  • 객체를 정의하는 방법이다
  • 자동차에 비유하면 클래스는 자동차의 설계도에 해당한다
# 텅 비어있는 Car 설계도 (클래스)
class Car:
    pass

객체

  • 클래스를 통해 만드는 실체다. 인스턴스라고도 한다
  • 개별 객체는 모두 메모리에 올라간다
car_1 = Car()

car_2 = Car()

속성

  • 클래스에 정의된 변수를 말한다
  • 자동차의 브랜드, 색깔, 가격과 같은 것
  • 정의된 위치에 따라 클래스 변수, 인스턴스 변수가 있다

  • 클래스 변수
    • 모든 인스턴스가 공유하는 속성
    • 클래스 스코프에서 정의한다
  • 인스턴스 변수
    • 각각의 인스턴스가 독립적으로 가지는 속성
    • __init__이라는 메서드 스코프에서 정의한다
class HyundaiCar:
    brand = "Hyundai"

    def __init__(self, color):
        self.color = color
        
  • brand: 현대 회사에서 생산하는 모든 차량의 브랜드는 Hyundai 이므로 클래스 변수로 정의
  • color: 차량 색깔은 자동차마다 다르므로 인스턴스 변수로 정의. 인스턴스 초기화 메서드인 __init__() 의 인자로 색깔을 넘겨준다

  • 인스턴스(객체)를 생성해보자
car_1 = HyundaiCar("white")

car_2 = HyundaiCar("black")
print(car_1.brand) # Hyundai
print(car_2.brand) # Hyundai

print(car_1.color) # white
print(car_2.color) # black

메서드

  • 객체에 정의된 함수를 말한다
  • 객체가 가지는 행동을 정의한다
  • 자동차의 시동 걸기, 달리기, 와이퍼로 유리 닦기, 경적 울리기와 같은 것
  • 속성과 마찬가지로 정의된 위치에 따라 클래스 메서드, 인스턴스 메서드가 있다
  • 그 밖에도 파이썬에서 제공하는 __init__, __str__ 과 같은 다양한 매직 메서드가 있다

  • 클래스 메서드
    • 인스턴스 변수를 사용하지 않고, 클래스 변수만 사용하는 경우 클래스 메서드로 정의할 수 있다
    • @classmethod 라는 데코레이터를 붙여주면 파이썬이 클래스 메서드로 인식한다
    • 변수의 첫 번째 인자로 cls 를 넘겨줘야 한다
    • 클래스 메서드는 객체를 생성하지 않아도 사용할 수 있다는 특징이 있다
  • 정적 메서드
    • 인스턴스 변수, 클래스 변수 모두 사용하지 않는 경우 정적 메서드로 정의할 수 있다
    • @staticmethod 라는 데코레이터를 붙여주면 파이썬이 정적 메서드로 인식한다
  • 인스턴스 메서드
    • 인스턴스 변수를 사용하는 경우 인스턴스 메서드로 정의해야 한다
    • 변수의 첫 번째 인자로 인스턴스 자기 자신을 의미하는 self 를 넘겨줘야 한다
  • 매직 메서드
    • 파이썬에서 제공하는 특별한 종류의 메서드로 양쪽에 더블 언더바(__) 로 감싸져 있다 (ex. __init__)
    • __init__: 인스턴스를 생성한 후 초기화 목적으로 가장 먼저 호출된다
    • __str__: 인스턴스를 print() 함수로 출력할 때 호출된다
import pandas as pd

class HyundaiCar:
    brand = "Hyundai"

    # 매직 메서드
    def __init__(self, color):
        self.color = color
    
    # 클래스 메서드
    @classmethod
    def get_brand(cls):
        print(f"차량 브랜드는 {cls.brand} 입니다")
    
    @staticmethod
    def beep():
        print("빵빵")
    
    # 인스턴스 메서드
    def change_color(self, color):
        self.color = color
        print(f"차량 색깔이 {self.color}로 변경되었습니다.")

친절한 클래스 되기

  • Docstring
  • Type hinting
Python Advanced Series [Part5]: Code Documenting Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (2)

You may also like

See all python
01 May 2022 Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (2)
language
python

Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (2)

17 Feb 2022 Python Advanced Series [Part5]: Code Documenting
language
python

Python Advanced Series [Part5]: Code Documenting

16 Feb 2022 Python Advanced Series [Part4]: 파이썬 가상환경
language
python

Python Advanced Series [Part4]: 파이썬 가상환경

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.