객체지향 프로그래밍이란 ?(Object Oriented Programming)
프로그램을 구성하는 변수와 함수들에서 서로 연관성있는 것끼리 묶어서 모듈화하는 것을 개발하는 언어들을 객체지향 프로그래밍 언어라고함
# Instance(객체)
- 연관성 있는 값들과 그 값들을 처리하는 함수(메소드)들을 묶어서 가지고 있는 것(값).
- 객체의 구성요소
- 속성(Attribute)
- 객체의 데이터/상태로 객체를 구성하는 값들.
- 메소드(method)
- 객체가 제공하는 기능으로 주로 Attribute들을 처리한다.
## Class(클래스) 정의
- class란: 객체의 설계도
- 동일한 형태의 객체들이 가져야 하는 Attribute와 Method들을 정의 한 것
- 클래스를 정의할 때 어떤 속성과 메소드를 가지는지 먼저 설계해야 한다.
- 클래스로 부터 객체(instance)를 생성한 뒤 사용한다.
```python
class 클래스이름: #선언부
#클래스 구현
#메소드들을 정의
```
- 클래스 이름의 관례: 파스칼 표기법-각 단어의 첫글자는 대문자 나머진 소문자로 정의한다.
- ex) Person, Student, HighSchoolStudent
## 클래스로부터 객체(Instance) 생성
- 클래스는 데이터 타입 instance는 값이다.
```python
변수 = 클래스이름()
```
class Person:
pass
### 다중상속과 단일 상속
- 다중상속
- 여러 클래스로부터 상속할 수 있다
- 상속 관계가 복잡할 수 있다.
- 단일상속
- 하나의 클래스로 부터만 상속할 수 있다. = 부모클래스가 1개
- 파이썬은 다중상속을 지원한다.
- MRO (Method Resolution Order)
- 다중상속시 메소드 호출할 때 그 메소드를 찾는 순서.

1. 자기자신
2. 상위클래스(하위에서 상위로 올라간다)
- 다중상속의 경우 먼저 선언한 클래스 부터 찾는다. (왼쪽->오른쪽)
- 그래도 없으면 object 클래스
- MRO 순서 조회
- Class이름.mro()
'Tools > Python' 카테고리의 다른 글
[GIT] 깃으로 협업하기 가이드라인 (0) | 2024.01.08 |
---|---|
[python] 07. 패키지와 모듈 (1) | 2023.12.31 |
[python] 05.함수 | return, value, parameter (1) | 2023.12.31 |
[python] 04.제어문 컴프리헨션 | 제어문(조건문,반복문)과 간단한 제어문(컴프리헨션)을 배워보자 (1) | 2023.12.31 |
[python] 03.자료구조 | Set (0) | 2023.10.24 |