수학과의 좌충우돌 프로그래밍

클래스와 인스턴스란? (1) 본문

프로그래밍 언어/Python

클래스와 인스턴스란? (1)

ssung.k 2018. 11. 30. 21:23





안녕하세요 강민성입니다.


오늘은 파이썬의 클래스 인스턴스에 대해서 알아보도록 하겠습니다.


객체지향언어에서는 빼놓을 수 없는 개념이죠.


파이썬 언어로 들어가기 전에 현실세계에서 무슨 개념과 유사한지 부터 알아보도록 하겠습니다.




클래스와 인스턴스란?


다음과 같이 두 명의 인간이 있습니다.


한 명은 강사, 한 명은 학생이죠.


그러면 둘은 같다고 할 수 있을까요?


당연히 상황에 따라서 달라질 겁니다.




둘은 강사와 학생이라는 입장에서는 엄연히 다릅니다. 


부가 설명을 할 것도 없이 강사와 학생은 


이름도, 나이도, 성별도 많은 것이 다를 겁니다.




하지만 둘은 인간이라는 관점에서 


같은 인간의 범주로 묶을 수 있습니다.


지금까지의 예시에서 인간이 바로 클래스,


강사와 학생은 인간이라는 클래스의 인스턴스가 됩니다.


그러면 클래스와 인스턴스에 대해서 이해가 좀 되셨나요?





다음으로는 파이썬 코드로 돌아가서 클래스를 직접 만들어보도록 하겠습니다.

          

                                                                                                                  

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 함수에 대입해서


클래스에 함수를 넣었습니다.


결과는 똑같이 나오는 걸 확인할 수 있습니다.


이에 대해서도 뒤에서 더 자세히 다뤄보도록 하겠습니다.






마무리


간단하게 클래스와 인스턴스라는 게 어떤 개념인지 알아보았습니다.


다음시간에는 더 나아가


이들에 대하여 깊게 알아보도록 하겠습니다.


지금까지 긴 글을 읽어주셔서 감사합니다 :)

Comments