푸잉이의 기술블로그
[Python] 클래스(Class), 객체(Object), 인스턴스(Instance) 본문
내가 공부하다 헷갈려서 정리한 요약본
1. 객체 지향 프로그래밍 (Objected Oriented Programing)
- 모든 개념을 객체(Object, 사물)로 보고 객체 중심으로 프로그램을 진행하는 기법
- ex) 스마트폰, 에어컨, 세탁기 등 독립된 객체들이 가진 고유의 기능으로 서로 상호 작용하여 독립된 단위로 구분하고 파악할 수 있도록 하는 것.
- 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
- ex) 스마트폰, 에어컨, 세탁기 각 기능들을 가진 객체를 만들고, 서로 유기적인 상호작용을 통해 편안한 집을 만드는 것
1) 장점
- 코드 재사용 용이
-> 남이 만든 클래스를 가져와서 이용할 수 있음, 상속을 통해 확장해서 사용 가능
- 유지보수 쉬움
-> 객체 지향 프로그래밍은 수정해야할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 됨.
cf) 절차 지향 프로그래밍은 코드를 수정할 때 일일이 찾아 수정해야 함
- 대형프로젝트에 적합
-> 클래스 단위로 모듈화시켜 개발할 수 있어 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉬움
2) 단점
- 처리 속도가 상대적으로 느림
- 객체가 많으면 용량 커질 수 있음
- 설계시 많은 시간과 노력이 필요함
2. 객체 (Object)
- 객체는 속성 및 동작을 가짐
- ex) 포켓몬이라는 객체 or 인스턴스 -> 이름, 나이, 몸무게 등 속성, 변수
- ex) 몸통박치기, 앞구르기,뒷구르기 등 -> 메소드 (Method)
즉, 객체 혹은 인스턴스는 "변수와 메소드"로 구성되어 있음.
1) 객체와 인스턴스의 차이
- 인스턴스: 클래스로 만든 객체
- 클래스 이름 뒤에 ()를 넣으면 만듦.
- 그 객체가 어떤 클래스의 객체인지 설명할 때 사용.
3. 클래스 (Class)
1) 클래스란?
- 변수와 함수를 묶어서 하나의 새로운 객체로 만드는 것
- 특정한 종류의 객체들을 찍어내는 template
- 복잡한 코드를 쉽게 호출하고 사용할 수 있게 한다.
- 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것
- ex) 빨래만 해주는 세탁기를 만드는 것
- 객체를 만들기 위한 메타정보
클래스란, 어떤 물건을 만들기 위한 틀이고, 똑같은 물건 (인스턴스)를 만들 수 있다.
2) 조건
- 형식: Class 클래스 이름:
- 클래스 이름은 반드시 첫 글자는 대문자로 입력
- 클래스 구성
1. 속성 (Attribute)
- 객체가 가지는 여러 가지 데이터를 보관
- 멤버 변수
2. 매서드 (Method)
- 객체와 관련된 동작을 하는 내부 함수
- 멤버 함수
3) 생성자 (Constructor)
- __init__(): 메소드는 클래스에서 가장 먼저 시작시키는 메소드
- 특별한 메서드로 클래스로 객체를 생성할 때 한 번 실행됨.
- 생성자를 사용하면 객체가 생성될 때 객체의 속성을 생성 및 초기화할 수 있음.
- 클래스 내에서 특별한 이름(__init__)을 가지면 객체가 생성될 때 자동으로 호출되는 함수가 있는 것을 생성자라 함.
- __init__ 이 자동으로 호출 // init 이 초기화하다라는 뜻인 initialize 약어
- `__`로 시작하는 함수는 모두 특별한 메서드
- member1= A().a -> 생성된 인스턴스에 점을 찍어서 인스턴스 변수나 메서드에 접근할 수 있음
4) Self
- 객체의 인스턴스 그 자체를 말함
- 객체 자기 자신을 참조하는 매개변수
- self를 사용함으로 클래스 내에 정의한 멤버에 접근할 수 있음.
- class 안에서 인스턴스를 지칭할 방법이 없으니깐 self를 이용하여 클래스의 메소드와 속성에 접근
https://jeong-pro.tistory.com/95
객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)
객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해
jeong-pro.tistory.com
https://www.youtube.com/watch?v=QCNkJ3SaZhk
'IT > Python' 카테고리의 다른 글
| 평가 지표 (0) | 2023.08.25 |
|---|---|
| 선형 회귀/회귀/분류 개념 (0) | 2022.12.30 |
| [알고리즘 스터디] 스택 (Stack) 큐 (Queue) (0) | 2022.12.07 |
| [알고리즘 스터디] 해쉬 (Hash) (0) | 2022.11.28 |
| 알고리즘의 시간 복잡도, Big-O (0) | 2022.11.25 |