일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 알고리즘
- react
- c++
- 알고리즘 풀이
- 알고리즘 문제
- Git
- js
- Algorithm
- 장고
- AWS
- django widget
- DRF
- es6
- 알고리즘 연습
- django ORM
- web
- HTML
- 파이썬
- java
- Baekjoon
- form
- CSS
- django rest framework
- javascript
- PYTHON
- 파이썬 알고리즘
- Django
- MAC
- API
- 백준
- Today
- Total
수학과의 좌충우돌 프로그래밍
클래스와 인스턴스란? (1) 본문
안녕하세요 강민성입니다.
오늘은 파이썬의 클래스와 인스턴스에 대해서 알아보도록 하겠습니다.
객체지향언어에서는 빼놓을 수 없는 개념이죠.
파이썬 언어로 들어가기 전에 현실세계에서 무슨 개념과 유사한지 부터 알아보도록 하겠습니다.
클래스와 인스턴스란?
다음과 같이 두 명의 인간이 있습니다.
한 명은 강사, 한 명은 학생이죠.
그러면 둘은 같다고 할 수 있을까요?
당연히 상황에 따라서 달라질 겁니다.
둘은 강사와 학생이라는 입장에서는 엄연히 다릅니다.
부가 설명을 할 것도 없이 강사와 학생은
이름도, 나이도, 성별도 많은 것이 다를 겁니다.
하지만 둘은 인간이라는 관점에서
같은 인간의 범주로 묶을 수 있습니다.
지금까지의 예시에서 인간이 바로 클래스,
강사와 학생은 인간이라는 클래스의 인스턴스가 됩니다.
그러면 클래스와 인스턴스에 대해서 이해가 좀 되셨나요?
다음으로는 파이썬 코드로 돌아가서 클래스를 직접 만들어보도록 하겠습니다.
1 2 3 4 | class Human(): teacher = Human() student = Human() | cs |
다음과 같이 Human 이라는 class 를 선언한 후에
teacher와 student 라는 Human 에 대한 instance를 만들어 줍니다.
사실 우리가 평상시에 당연하게 사용해왔던 int, float, list 등도 class 입니다.
내부적으로 각 class가 정의가 되있는 것이죠.
예를 들어 list 에 값을 추가하거나 뺴는 함수 append 나 pop 등도
list 라는 클래스의 내부에 정의가 되있는 겁니다.
자세한 설명은 뒤에 가서 이어야 하도록 하겠습니다.
다음과 같이 class 와 instance를 사용함으로서
코드를 사람이 이해하기 쉽게 할 수 있습니다.
예시를 통해 알아보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Human(): teacher = Human() student = Human() teacher.name = '선생님' student.name = '학생' teacher.age = 32 student.age = 18 def intro(person): print("{}의 나이는 {}입니다." .format(person.name, person.age)) intro(teacher) # 선생님의 나이는 32입니다. intro(student) # 학생의 나이는 18입니다. | cs |
아까와 마찬가지로 teacher와 student라는 instance를 지정해주고
각각의 이름과 나이를 지정해주었습니다.
다음으로 intro 라는 함수로 호칭과 나이를 출력해보았습니다.
이 때 함수 intro를 Human의 함수로 만들어보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Human(): teacher = Human() student = Human() teacher.name = '선생님' student.name = '학생' teacher.age = 32 student.age = 18 def intro(person): print("{}의 나이는 {}입니다." .format(person.name, person.age)) Human.intro = intro teacher.intro() # 선생님의 나이는 32입니다. student.intro() # 학생의 나이는 18입니다. | cs |
intro 라는 함수를 Human.intro 함수에 대입해서
클래스에 함수를 넣었습니다.
결과는 똑같이 나오는 걸 확인할 수 있습니다.
이에 대해서도 뒤에서 더 자세히 다뤄보도록 하겠습니다.
마무리
간단하게 클래스와 인스턴스라는 게 어떤 개념인지 알아보았습니다.
다음시간에는 더 나아가
이들에 대하여 깊게 알아보도록 하겠습니다.
지금까지 긴 글을 읽어주셔서 감사합니다 :)
'프로그래밍 언어 > Python' 카테고리의 다른 글
python map() 함수에 대해 알아보자! (0) | 2019.01.01 |
---|---|
문자열 함수 find와 index (2) | 2018.12.30 |
Scoping , LEGB 룰 (0) | 2018.12.01 |
클래스와 인스턴스란? (3) 메소드 (0) | 2018.12.01 |
클래스와 인스턴스란? (2) 모델링 (0) | 2018.11.30 |