- 클래스를이용한 2개의계산기구현 class Calculator: def init (self): self.result = 0 def adder(self, num): self.result += num return self.result cal1 = Calculator()

Similar documents
17장 클래스와 메소드

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Java7.pptx

JAVA PROGRAMMING 실습 08.다형성

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Chapter 6.ppt

C 언어 프로그래밊 과제 풀이

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - 2강

슬라이드 1

C++ Programming

3장 함수

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

No Slide Title

PowerPoint Presentation

Microsoft PowerPoint - additional06.ppt [호환 모드]

Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint Template

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

제11장 프로세스와 쓰레드

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

PowerPoint 프레젠테이션

PowerPoint Presentation

C++ Programming

PowerPoint Presentation

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

C++ Programming

Slide 1

구로구민체육센터 여성전용 기구필라테스 강좌 신설 구로구시설관리공단은 신도림생활체육관에서 2014년도부터 시행하여 주민의 큰 호응을 얻고있는 기구필라 테스 강좌를 일자로 구로구민체육센터에 확대 시행하게 되었습니다. 구로구 관내 고객들의 니즈를 반영한 기

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

쉽게 풀어쓴 C 프로그래밍

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint 프레젠테이션

PowerPoint Template

유니티 변수-함수.key

Microsoft PowerPoint - additional08.ppt [호환 모드]

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

슬라이드 1

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

설계란 무엇인가?

C++ 기본문법 정리

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

JUNIT 실습및발표

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - C++ 5 .pptx

슬라이드 1

Microsoft PowerPoint - VB.NET_06.pptx

Microsoft PowerPoint - additional07.ppt [호환 모드]

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

쉽게

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

PowerPoint Presentation

2장 변수와 프로시저 작성하기

C++ Programming

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

JVM 메모리구조

윈도우즈프로그래밍(1)

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint Python-Function.pptx

PowerPoint 프레젠테이션

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

JAVA PROGRAMMING 실습 02. 표준 입출력

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft Word - EEL2 Lab4.docx

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

금오공대 컴퓨터공학전공 강의자료

JAVA PROGRAMMING 실습 07. 상속

Microsoft PowerPoint - 2-Objective-C 기초

chap x: G입력

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

Design Issues

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint - chap08-1 [호환 모드]

Secure Programming Lecture1 : Introduction

Slide 1

TEST BANK & SOLUTION

Microsoft PowerPoint - [2009] 02.pptx

Transcription:

5 장파이썬날개달기 05-1 파이썬프로그래밍의핵심, 클래스 클래스는도대체왜필요한가? - 계산기의더하기기능구현 result = 0 def adder(num): global result result += num return result print(adder(3)) print(adder(4)) : adder 함수는입력인수로 num을받으면이전에계산된결과값에더한후출력 - 2개의계산기구현 result1 = 0 result2 = 0 def adder1(num): global result1 result1 += num return result1 def adder2(num): global result2 result2 += num return result2 print(adder1(3)) print(adder1(4)) print(adder2(3)) print(adder2(7)) : 2개의계산기가서로영향을미치지않음 : 계산기가더많아질때마다전역변수와함수를추가해야하기때문에비효율적 해결방안은클래스의사용 1

- 클래스를이용한 2개의계산기구현 class Calculator: def init (self): self.result = 0 def adder(self, num): self.result += num return self.result cal1 = Calculator() # cal1, cal2 - 인스턴스라고함 cal2 = Calculator() # 인스턴스-클래스에의해생성된객체 print(cal1.adder(3)) print(cal1.adder(4)) print(cal2.adder(3)) print(cal2.adder(7)) : 클래스를이용하면계산기의개수가늘어나도인스턴스만추가로생성하면되기때문에프로그램이간단해진다. 클래스개념잡기 - 클래스 : 똑같은무엇인가를계속해서만들어낼수있는설계도면같은것 ( 뽑기틀, 붕어빵틀 ) - 인스턴스 : 클래스에의해서만들어진피조물 ( 별또는하트가찍힌뽑기, 붕어빵 ) 이야기형식으로클래스기초쌓기 - 클래스변수 # 클래스생성 class Service: secret = " 영구는배꼽이두개다." # 인스턴스생성 pey = Service() print(pey.secret) 2

- 클래스함수 class Service: secret = " 영구는배꼽이두개다." def sum(self, a, b): result = a + b print("%s + %s = %s 입니다." % (a, b, result)) pey = Service() print(pey.secret) print(pey.sum(1,1)) : 클래스내함수의첫번째인수는무조건 self로사용해야인스턴스의함수로사용할수있다. self 제대로알기 - 사용자에게이름을입력받아서 sum함수를제공할때앞부분에그이름을넣어준다. class Service: secret = " 영구는배꼽이두개다." def setname(self, name): self.name = name def sum(self, a, b): result = a + b print("%s님 %s + %s = %s입니다." % (self.name, a, b, result)) pey = Service() pey.setname(" 홍길동 ") print(pey.sum(1,1)) : self 는 Service 에의해생성된인스턴스 (pey, ) 를지칭함 3

init 이란무엇인가? class Service: secret = " 영구는배꼽이두개다." def setname(self, name): self.name = name def sum(self, a, b): result = a + b print("%s님 %s + %s = %s입니다." % (self.name, a, b, result)) babo = Service() print(babo.sum(1,1)) : 다음과같은오류발생 AttributeError: 'Service' object has no attribute 'name' name을입력하는과정이빠져서오류발생, 매번아래와같은문장을추가하는것은번거롭다. babo.setname(" 나바보 ") : 해결방안 init 함수 ( 인스턴스를만들때항상실행 ) class Service: secret = " 영구는배꼽이두개다." def init (self, name): self.name = name def sum(self, a, b): result = a + b print("%s님 %s + %s = %s입니다." % (self.name, a, b, result)) pey = Service(" 홍길동 ") print(pey.sum(1,1)) 4

클래스자세히알기 - 클래스는인스턴스를만들어내는공장과같다. - class 키워드를이용하여클래스생성 : 클래스이름뒤에상속할클래스가있다면괄호 ( ) 안에상속할클래스이름을입력 사칙연산클래스만들기 - 클래스를어떻게만들지먼저구상하기 (0) 클래스이름 : FourCal (1) 두숫자입력 : setdata 메서드 (2) 더하기 : sum 메서드 (3) 빼기 : sub 메서드 (4) 곱하기 : mul 메서드 (5) 나누기 : div 메서드 : 메서드 클래스함수 - 클래스구조만들기 class FourCal: pass a = FourCal() print(type(a)) <class ' main.fourcal'> : 객체 a의타입은 FourCal 클래스이다. 5

- 객체에숫자지정할수있게만들기 class FourCal: def setdata(self, first, second): self.first = first self.second = second a = FourCal() a.setdata(4,2) print(a.first) print(a.second) - 더하기, 곱하기, 빼기, 나누기기능만들기 class FourCal: def setdata(self, first, second): self.first = first self.second = second def sum(self): result = self.first + self.second return result def mul(self): result = self.first * self.second return result def sub(self): result = self.first - self.second return result def div(self): result = self.first / self.second return result a = FourCal() b = FourCal() a.setdata(4, 2) b.setdata(3, 7) print(a.sum()) print(a.mul()) 6

print(a.sub()) print(a.div()) # 2.0 print(b.sum()) print(b.mul()) print(b.sub()) print(b.div()) # 0.42857142857142855 박씨네집 클래스만들기 - 클래스구상하기 (0) 클래스이름 : HousePark (1) 박씨가족의이름을설정 : setname 메서드 (2) 박씨가족중한사람이여행가고싶은곳을출력 : travel 메서드 >>> pey = HousePark() >>> print(pey.lastname) 박 >>> pey.setname(" 응용 ") >>> print(pey.fullname) 박응용 >>> pey.travel(" 부산 ) 박응용, 부산여행을가다. # 방법 1 class HousePark: lastname = " 박 " def setname(self, name): self.fullname = self.lastname + name def travel(self, where): print("%s, %s여행을가다." % (self.fullname, where)) pey = HousePark() print(pey.lastname) pey.setname(" 응용 ") print(pey.fullname) pey.travel(" 부산 ") # self: pey / where: 부산 7

# 방법 2 - init 메서드로초기값설정 class HousePark: lastname = " 박 " def init (self, name): self.fullname = self.lastname + name def travel(self, where): print("%s, %s여행을가다." % (self.fullname, where)) pey = HousePark(" 응용 ") # 만약 pey = HousePark() 로하면오류! print(pey.lastname) print(pey.fullname) pey.travel(" 부산 ") 클래스의상속 - 상속 (inheritance): 물려받다 - 어떤클래스를만들때다른클래스의기능을물려받게하는것 - HouseKim 이라는클래스가 HousePark 클래스를상속받는예제 class HouseKim(HousePark): lastname = " 김 " juliet = HouseKim(" 줄리엣 ") print(juliet.lastname) print(juliet.fullname) juliet.travel(" 독도 ") - 메서드오버라이딩 (1) 상속받을대상인클래스의메서드의이름은같지만그행동을다르게해야할때 (2) HouseKim 클래스가 HousePark 클래스를상속받을때상속받는 travel 함수를변경하는방법 8

class HouseKim(HousePark): lastname = " 김 " def travel(self, where, day): print("%s, %s여행 %d일가네." % (self.fullname, where, day)) juliet = HouseKim(" 줄리엣 ") juliet.travel(" 독도 ",3) - 연산자오버로딩 (1) 연산자오버로딩 (overloading) 이란연산자 (+, -, *, /) 를객체 ( 인스턴스 ) 끼리사용할수있게하는기법 (2) add (+) 예제 class HousePark: lastname = " 박 " def init (self, name): self.fullname = self.lastname + name def travel(self, where): print("%s, %s여행을가다." % (self.fullname, where)) def love(self, other): print("%s, %s 사랑에빠졌네 " % (self.fullname, other.fullname)) def add (self, other): print("%s, %s 결혼했네 " % (self.fullname, other.fullname)) class HouseKim(HousePark): lastname = " 김 " def travel(self, where, day): print("%s, %s여행 %d일가네." % (self.fullname, where, day)) pey = HousePark(" 응용 ") julliet = HouseKim(" 줄리엣 ") pey.love(julliet) pey + julliet # add 함수호출 9

05-2 모듈 모듈 - 모듈이란함수나변수, 또는클래스들을모아놓은파일 - 다른파이썬프로그램에서불러와사용할수있게만들어진파이썬파일 Python 작업디렉토리지정하기파이썬라이브러리들이설치되어있는디렉토리확인 >>> import sys >>> sys.path sys.path 에 f:/python/mymodules 디렉토리추가 ( 이때아래의경로와디렉토리가존재해야함 ) >>> sys.path.append("f:/python/mymodules") 이코드는아나콘다를새롭게시작할때마다해주어야함 작업을위한디렉토리가새롭게추가된것확인 >>> sys.path Spyder 에디터 def sum(a,b): return a+b f:/python/mymodules 에 mod1.py 로저장후실행 확인 import mod1 print(mod1.sum(3,4)) import의사용방법 import 모듈이름 mod1.py 에함수추가 def sum(a,b): 10

return a+b def safe_sum(a, b): if type(a)!= type(b): print(" 더할수있는것이아닙니다.") return else: result = sum(a, b) return result 확인 import mod1 print(mod1.safe_sum(3,4)) print(mod1.safe_sum(1,"a")) 클래스나변수등을포함한모듈 클래스를포함한모듈파일 (mod2.py) PI = 3.141592 class Math: def solv(self, r): # 반지름이 2인원의넓이계산 return PI * (r ** 2) def sum(a, b): return a+b f:/python/mymodules 에 mod2.py 로저장후실행 확인 import mod2 mod2.pi a=mod2.math() a.solv(2) mod2.sum(3,6) 새파일에서이전에만든모듈불러오기 11

다른모듈을포함한모듈파일 (modtest.py) import mod2 result = mod2.sum(3, 4) print(result) 05-3 패키지 패키지 (packages) (1) 디렉토리와파이썬모듈로이루어짐 (2) 도트 (.) 를이용하여파이썬모듈을계층적 ( 디렉토리구조 ) 으로관리 (3) 파이썬프로그램의효율적인공동작업이가능 가상의 game 패키지예 테스트를위해패키지만들기 (1) c:/python 디렉토리밑에서브디렉토리생성 (2) 각디렉토리에 init.py 파일만들어놓기 ( 내용은비워둠 ) 12

(3) echo.py 파일생성 # echo.py def echo_test(): print ("echo") (4) render.py 파일생성 # render.py def render_test(): print ("render") (5) path 설정 import sys sys.path # c:/python 경로가없음 sys.path.append("c:/python") sys.path # c:/python 경로생성확인 패키지안의함수실행하기 (1) echo 모듈을 import 하여실행 >>> import game.sound.echo >>> game.sound.echo.echo_test() echo (2) echo 모듈이있는디렉토리까지를 from import 실행 >>> from game.sound import echo >>> echo.echo_test() echo (3) echo 모듈의 echo_test 함수를직접 import 하여실행 >>> from game.sound.echo import echo_test >>> echo_test() echo init.py 의용도 init.py 파일은해당디렉토리가패키지의일부임을알려주는역할, 만약이파일이없으면패키지로인식되지않음 13