개념
클래스
- 변수나 함수들을 모아서 필요할때 사용할 수 있는 집합체
인스턴스
- 클래스에 의해 만들어진 객체
- 인스턴스는 각자 자신의 값을 가지고 있음
모델링
- 클래스로 현실의 개념을 표현
메소드
- 함수와 비슷한 개념
- 클래스에 묶여서 클래스 안에 있는 인스턴스와 관계되는 함수
실습
클래스 선언 (변수나 함수들을 모아 필요할때 사용하는 집합체)
1 2 3 | #사람이라는 클래스를 작성 class Human(): '''이야 사람이다''' | cs |
내용
인스턴스 생성(클래스에 의해 만들어진 객체)
1 2 3 | #Human이라는 클래스의 인스턴스로 person1, person2 생성 person1 = Human()#즉 Human이라는 클래스에 person1이라는 인스턴스가 생성됨 person2 = Human()#즉 Human이라는 클래스에 person2라는 인스턴스가 생성됨 | cs |
클래스의 특성 만들기
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 | #클래스 생성# class alphago(): '''나는 판별하는 알파고다''' #클래스 생성 끝# ##인스턴스 생성## choice1 = alphago() choice2 = alphago() ##인스턴스 생성 끝## ###클래스 특성 만들기### choice1.what = '강아지' choice2.what = '사람' choice1.speak = '말해' choice2.speak = '짖어' def rst(choice): print('엄마!! 저기 {}이(가) {}요!!'.format(choice.what, choice.speak)) alphago.rst = rst choice1.rst() choice2.rst() ###클래스 특성 만들기 끝### | cs |
클래스 특성만들기 실행
모델링(클래스의 개념을 현실에 표현)
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 31 32 33 34 35 36 37 38 39 40 | #사람이라는 클래스를 작성 class Human(): '''!사람 클래스 생성!''' '''사람 만들기 함수''' def create_Human(name, age): #사람의 이름과 나이를 넣어 만들것이다 person = Human() #Human클래스를 person에 넣어 사용!. @@인스턴스 생성@@ person.name = name #class의 이름은 name로 사용! person.age = age #class의 나이는 age로 사용! return person #함수를 끝내고 person으로 돌아간다! #이 함수(def)는 인간의 형태를 만드는데 위에 선언한 클래스를 사용하여 이름과 나이를 집어넣는다는 뜻입니다. Human.create = create_Human #클래스를.만든다 = 함수를 통해서 #다시 설명하자면 create_Human(함수에서 만든 내용을) 클래스에 집어 넣는다. ###========여기까지가 클래스의 뼈대만들기 입니다.=========### '''본격적으로 사용자가 값을 집어넣어 볼까요?''' person = Human.create('짱구',10) #person에 짱구, 10이라는 값을 넣어준다.(14줄에 선언한것) ###========여기까지가 클래스의 살붙이기 입니다.=========### def old(person): #person에 old가 들어온다면 person.age += 1 #1살을 먹이겠다! print('{}가 나이를 먹어서 {}살이 되었습니다.'.format(person.name, person.age)) #1살 먹인것 확인 def young(person): #person에 young가 들어오면 person.age -= 1 #1살을 줄여주겠다! print('{}가 과거로 돌아가 {}살이 되었습니다.'.format(person.name, person.age))#1살 줄이기 확인 Human.old = old #27~29줄을 클래스에 넣어주겠다 Human.young = young #31~33줄을 클래스에 넣어주겠다 person.old() #이렇게 인스턴스에 함수를 호출하는것을 메소드를 호출한다고 한다. person.young() #이렇게 인스턴스에 함수를 호출하는것을 메소드를 호출한다고 한다. | cs |
모델링 실행결과
이 방법은 실행하는데는 문제가 없으나
빈 클래스를 만들고 함수는 따로만들고 클래스에 함수를 넣는것은 번거로우므로
클래스는 메소드를 다루기 위해 제공하는 문법을 사용해보겠습니다.
위에 사용하는 짱구가 1살 먹고 줄어들고 하는 모델링예시를 가지고 해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #사람이라는 클래스를 작성 class Human(): #클래스 생성 '''이야 사람이다''' def create(name, age):#create라는 이름의 함수로 사람 뼈대만들기! person = Human() person.name = name person.age = age return person def old(person): person.age += 1 print('{}가 나이를 먹어서 {}살이 되었습니다.'.format(person.name, person.age)) def young(person): person.age -= 1 print('{}가 과거로 돌아가 {}살이 되었습니다.'.format(person.name, person.age)) #클래스안에 이 모든것을 넣어준다# person = Human.create('짱구',10) person.old() person.young() person.old() | cs |
실행결과
클래스안에 함수들만을 넣어준것 빼고는 달라진 코드가 없는데 훨씬 사용하기 쉬워졌다
'파이썬 프로그래밍 > 파이썬 기초' 카테고리의 다른 글
[Python] 파이썬 클래스의 상속 기초 개념잡기 (0) | 2017.03.15 |
---|---|
[Python]파이썬 특수한 메소드 init, str 사용해보기 (0) | 2017.03.15 |
[Python] 파이썬 break의 정의, 예제 (0) | 2017.03.09 |
[Python] 파이썬의 while의 조건문을 통한 개념과 예제 (2) | 2017.03.09 |
[Python] 파이썬 packing, unpacking 정의와 예제 (0) | 2017.03.09 |