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

클래스와 인스턴스란? (2) 모델링 본문

프로그래밍 언어/Python

클래스와 인스턴스란? (2) 모델링

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



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


저번 시간에 이어서 클래스와 인스턴스에 대해서


알아보도록 하겠습니다.




모델링이란?



클래스를 사용하는 이유는 


현실의 개념을 더 쉽게 코드로 표현하기 위해서 입니다.


저번 시간에 이어서 Human 클래스를 선언하고


이에 현실에 개념을 적용시켜서 추가해보도록 하겠습니다.


1
2
3
4
5
6
7
class Human():
    pass
 
person = Human()
person.job = 'student'
person.age = 23
cs


Human 클래스에 대한 person 객체를 만들어주고


직업, 나이를 지정해주었습니다.


pass는 신경 안쓰셔도 상관없습니다.


그런데 사람이 여러 명일 경우에 모두 직업, 나이가 있을 텐데


다음과 같은 방식으로 선언을 하면 번거로울 겁니다.



그래서 사람을 정의해주는 함수를 한 번 만들어보겠습니다.


1
2
3
4
5
6
7
8
9
10
class Human():
    pass
 
def define_Human(job,age):
    person = Human()
    person.job = job
    person.age = age
    return person
 
person = define_Human('student',23)
cs



 

다음과 같이 define_Human 이라는 함수를 만들고


매개변수로 받은 값들을 


넣어주면 위와 같은 의미가 될 것입니다.



다음으로는 define_Human 함수를 Human class에 넣어보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
class Human():
    pass
 
def define_Human(job,age):
    person = Human()
    person.job = job
    person.age = age
    return person
 
Human.define = define_Human
person = Human.define('student',23)
cs



마찬가지로 위와 같은 기능을 할 것입니다.


이제는 Human class에 함수를 더 추가해보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Human():
    pass
 
def define_Human(job,age):
    person = Human()
    person.job = job
    person.age = age
    return person
 
Human.define = define_Human
person = Human.define('student',23)
 
def get_older(person):
    person.age += 1
    print("{}의 나이가 {}가 되었습니다".format(person.job,person.age))
    
Human.older = get_older
 
person.older() # student의 나이가 24가 되었습니다
cs



get_older 라는 나이를 1살 추가해주는 함수를 생성하고


이도 마찬가지로 class의 함수로 바꿔주었습니다.


그리고 그 함수를 실행한 결과


주석과 같이 


'student의 나이가 24가 되었습니다'


라고 출력되는 걸 확인 할 수 있습니다.


이와 같이 클래스로 현실의 개념을 표현하는 것을 모델링 이라고 합니다.




마무리


글이 길진 않았지만 여기까지 class를 왜 쓰는지 


어떤 느낌인지 아셨을 거라고 생각합니다.


그러면 다음 시간에는 메소드에 대해서 배워보도록 하겠습니다.




Comments