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이 출력되는 것 확
참조
- (정의 및 만들기) 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
- https://easyitwanner.tistory.com/328
- (전체적인 이해) 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
'Python' 카테고리의 다른 글
faulthandler (파이썬 추적 백업 모듈) (0) | 2024.07.05 |
---|---|
@classmethod, @staticmethod (파이썬 매서드 데코레이터) (1) | 2024.07.01 |
abc (추상화 클래스) (0) | 2024.06.28 |
distutils (파이썬 모듈 배포 패키지) (0) | 2024.06.18 |
ASGI란 (WSGI의 후계자) (0) | 2024.03.28 |