목적: 파이썬에서 자주 나오는 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이 출력되는 것 확