반응형
" 가장 큰 영광은 한 번도 실패하지 않음이 아니라, 실패할 때마다 다시 일어서는 데에 있다. "
- 공자 -
Python(파이썬) 9. 클래스(Class)와 객체(Object), 인스턴스(Instance)
목 차
1. 객체 지향 프로그래밍(OOP, Object-Oriented Programming
2. 클래스(Class)
3. 객체(Object)와 인스턴스(Instance)
1. 객체 지향 프로그래밍(OOP, Object-Oriented Programming)
- 컴퓨터 프로그램의 방식 중 하나로 컴퓨터 프로그램을 명령어 대신 독립된 단위("객체")로 구분하고 파악할 수 있도록 도와준다.
- 예를 들어, 스마트폰, 에어컨, 세탁기, 건조기, 커피 머신 등 서로 독립된 객체들이 가진 고유의 기능으로 서로 상호작용하여 인간의 삶의 질을 높여준다.
2. 클래스(Class)
1) 클래스(Class)란?
- 클래스의 추상적인 개념은 "반복되는 변수, 메소드(함수)를 미리 정해놓은 틀(설계도)"라고 이해하면 쉽다.
- 클래스는 객체의 사용을 돕기 위해 구조나 행동 등을 정의한다.
- 따라서 복잡한 코드를 쉽게 호출하고 사용할 수 있게 한다.
클래스란, "어떤 물건을 만들기 위한 틀(클래스)이고 똑같은 물건(객체, 인스턴스)을 찍어낼 수 있다."
- class 클래스 이름: 형식으로 정의하며 클래스 이름은 반드시 첫 글자는 대문자로 입력한다.
- 정의된 class 클래스 이름: 밑에 다양한 함수(메소드)들과 변수(속성)들로 정의가 된다.
3) 클래스 및 객체 생성
① 객체의 설계도인 클래스를 먼저 정의한다.
② 클래스 내 변수 및 메소드를 정의한다.
→ 메소드를 정의할 때 매개변수의 첫 번째는 반드시 self를 입력하며, self는 현재의 객체를 가리키는 변수이다.
③ 정의된 클래스를 이용하여 객체를 생성한다.
④ 만든 객체의 속성과 메소드를 사용한다.
- 포켓몬 생성하기
3. 객체(Object)와 인스턴스(Instance)
1) 객체(Object), 인스턴스(Instance)란?
- 포켓몬이라는 객체 혹은 인스턴스를 생각했을 때, 포켓몬이라는 생명체는 이름, 나이, 몸무게 등 속성(Attribute)을 변수라고 한다.
- 속성들은 객체 안의 변수에 저장되며, 포켓몬들이 하는 몸통 박치기, 앉기, 점프하기 등의 행동들은 메소드(Method)라고 정의한다.
즉, 객체 혹은 인스턴스는 "변수와 메소드"로 구성되어 있다.
- 객체, 인스턴스는 객체 이름 = 클래스 이름()의 형태로 클래스에 정의된 것처럼 객체가 만들어진다.
- 객체가 생성된 이후에는 객체 이름.변수, 객체 이름.메소드()의 형식으로 변수와 메소드를 사용한다.
2) 객체와 인스턴스의 차이
- 클래스로 만든 객체를 인스턴스라고 하며, 두 단어는 혼용하여 사용이 가능하지만 구분 또한 가능하다.
- 위의 예제를 볼 때, Trainer1은 객체이고, 객체 Trainer1은 Poketmon의 인스턴스이다.
- 즉, 객체나 인스턴스나 Trainer1을 가리기지만, 인스턴스는 그 객체가 어떤 클래스의 객체인지 설명할 때 사용된다.
3) 생성자(Constructor)
- __init__() 메소드는 클래스에서 가장 먼저 시작시키는 메소드를 뜻한다.
- __init__()로 만들어진 메소드가 없는 클래스로 객체를 생성할 때는 오류가 없다.
- 초기 시작되는 메소드가 없기 때문이다.
- 반면 __init__()로 만들어진 메소드가 있는 클래스로 객체를 생성할 때는 __init__()메소드가 실행되기 때문에 오류가 생긴다.
- 클래스 내 __init__()메소드는 객체화(인스턴스화)시 시작되는 메소드
- 클래스 내 __init__()메소드가 아닌 다른 메소드는 정의만 해놓은 상태라고 생각하면 된다.
- 생성자를 사용하면 객체가 생성될 때 객체의 속성을 생성 및 초기화할 수 있다.
- "맨처음 클래스를 생성할 때 이것을 실행해라"라는 느낌의 생성자는 클래스의 맨 첫 부분에 한 번만 생성해준다.
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python(파이썬) 10. 상속과 오버 라이딩, 클래스 변수와 객체 변수 (0) | 2021.09.25 |
---|---|
Python(파이썬) 8. 함수(Function) (0) | 2021.09.23 |
Python(파이썬) 7. 1차 연습문제 (0) | 2021.09.23 |
Python(파이썬) 6. 딕셔너리(Dictionary) (0) | 2021.09.22 |
Python(파이썬) 5. 튜플(Tuple) (0) | 2021.09.22 |