본문 바로가기
Python

클래스, 객체, 속성, 메서드, 생성자, 인스턴스란 (파이썬 용어)

by yororing 2024. 6. 29.

00 개요

  • 목적: 파이썬에서 자주 나오는 class, object, attributes, method, instance의 개념들에 대해 정리하고자 함

1. 전체적인 이해

  • 파이썬은 객체 지향 프로그래밍 (Object-Oriented Programming) 언어로서 모든 것이 객체의 상호작용으로 이루어짐
  • 그 객체를 표현하기 위한 문법으로 클래스가 존재함
  • 파이썬 프로그램은 패키지, 모듈, 클래스, 함수 (메서드)로 구성됨
    • 함수→클래스→모듈→패키지로 그 묶음의 크기는 커짐

01 용어 정의

1. 클래스란 (class)

  • 클래스는 어떤 객체를 표현하기 위한 문법
  • 제품의 설계도 같은 개념 
  • 'class' 키워드를 사용하여 클래스를 정의 가능 

2. 객체란 (object)

  • 객체는 특정한 개념이나 모양으로 존재하는 것
  • 설계도로 만든 제품 같은 개념 
  • 객체는 클래스의 인스턴스 (instance)
  • 각 객체는 고유한 상태(속성)와 동작(메서드)을 가질 수 있음
  • 예) '자동차' 객체 생성 시 자동차는 모델명, 배기량, 가격, 색상 등과 같은 데이터를 가지고 있고 앞뒤로 움직일 수 있다

3. 속성이란 (attribute)

  • 위의 예시에서 모델명, 배기량, 가격, 색상 등과 같은 데이터를 가리킴
  • 클래스 안의 변수 같은 개념 

4. 메서드란 (method)

  • 위의 예시에서 자동차가 앞뒤로 움직이는 기능을 가리킴
  • 클래스 안의 함수 같은 개념 

5. 생성자란 (__init__)

  • 객체를 만들 때 실행되는 함수

6. 인스턴스란 (instance)

  • 메모리에 살아있는 객체 (객체 안에 포함된 개념)
  • 어떤 클래스의 대상 객체

02 클래스, 속성, 메서드 만들기

1. 클래스 만들기

1) 문법

class 클래스명:

 

# 예시)
class Car:   # 'Car' 클래스 생성
    pass     # 아무런 속성/메서드를 지니지 않은 경우에는 pass 입력
    
audi = Car() # audi를 Car() 클래스의 객체(인스턴스)로 선언

print(type(audi)) # 출력값: <class '__main__.Car'>

 

2. 클래스 메서드 만들기

  • 매개변수 (parameter) 입력하는 곳에 인스턴스의 주소가 입력될 수 있도록 해줘야 됨 (보통 self라는 단어를 써줌)

1) 문법

class 클래스명:
    def 메서드명(self):
        동작
# 예시)
class Car: 
    def move_forward(self):    # move_forward()라는 클래스 메서드 생성
        print("앞으로 전진!")
audi = Car()
audi.move_forward()

3. 클래스 속성 만들기

  • __init__ 메서드 사용하여 속성 선언 가능
    • __init__ 메서드는 클래스로 인스턴스 생성 시 호출되는 특별한 메서드
    • __init__ 메서드 안에 속성 부여 가능

1) 문법

class 클래스명:
    def __init__(self, 매개변수)"
        self.속성명 = 매개변수
# 예시)
class Car:
    def __init__(self, model_name):
        self.모델명 = model_name    # '모델명'이라는 속성 생성
                                    # 사용자가 Car() 클래스에 인자로 model_name을 줄 때 
audi = Car('A8')                 # Car() 클래스의 '모델명' 속성이 사용자가 준 인자로 정의됨
audo.모델명    # 출력값: 'A8'

  • 해당 인스턴스의 속성 값 지정하기:
인스턴스명.속성
  • audi라는 인스턴스 선언 시 매개변수 값으로 'A8'를 입력해줬기에 모델명 속성 값으로 A8이 출력되는 것 확

참조

    1. (정의 및 만들기) https://ggangtalife.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%81%B4%EB%9E%98%EC%8A%A4Class-%EB%A9%94%EC%84%9C%EB%93%9CMethod-%EC%86%8D%EC%84%B1Attribute-%EC%A0%95%EC%9D%98-%EC%82%AC%EC%9A%A9%EB%B2%95 
    2. https://easyitwanner.tistory.com/328
    3. (전체적인 이해) https://gustn33.tistory.com/entry/%ED%81%B4%EB%9E%98%EC%8A%A4%EB%9E%80%EA%B0%9D%EC%B2%B4-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%86%8D%EC%84%B1-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%83%9D%EC%84%B1%EC%9E%90-%EB%93%B1
    4.