프로그래밍 언어중 하나인 c언어에는 클래스가 없다. 굳이 클래스 없이도 프로그램을 만들수 있다는 말이다.

클래스는 지금까지 공부한 함수나 자료형처럼 프로그램 작성을 위해 필요한 요소는 아니다.

하지만 프로그램 작성시 클래스를 사용하면 프로그래머가 얻을 수 있는 이익은 상당하다.

 

계산기에 3이라는 숫자를 입력하고 + 기호를 입력한 후 4를 입력하면 결과값으로 7을 보여준다. 다시 한 번 + 기호를 입력한 후 3을 입력하면 기존 결과값 7에 3을 더해 10을 보여준다. 즉 계산기는 이전에 계산된 결과값을 항상 메모리 어딘가에 저장하고 있어야 한다.

return result문장을 지우면 결과값이 None None출력확인

 

adder 함수는 입력 인수로 num을 받으면 이전에 계산된 결과 값에 더한후 출력하는 함수.

이전에 계산된 결과값을 유지하기 위해서 result라는 전역변수(global)를 사용했다.

 

한 프로그램에서 2개의 계산기가 필요한 상황이 발생하면 어떻할까... 각각의 계산기는 각각 결과값을 유지해야 하기 때문에

adder함수 하나만으로는 결과 값을 유지할수 없다.

함수를 각각 따로 만들어야 한다.

 

하지만 계산기가 점점 늘어날때 이렇게 전역변수와 함수를 추가하긴 힘들것이다. 간단한 해결책이 있다.

 

cal1,cal2 라는 별개의 계산기(객체) 가 각각의 역할을 수행한다.

간단하게 cal3=Calcu()만 추가하므로 간편해진다.

 

programmer()의 결과값을 돌려받은 lee과 dong이 바로 객체이다.

 

객체와 인스턴스의 차이.

- 클래스에 의해서 만들어진 객체를 인스턴스라고 한다. 차이는 lee=programmer() 에서 lee는 객체이다.

lee라는 객체는 programmer의 인스턴스이다. 즉 인스턴스라는 말은 특정 객체(lee)가 어떤 클래스(programmer)의

객체 인지를 관계 위주로 설명할 때 사용된다. 즉 lee은 인스턴스 보다는 lee는 객체라는 표현이 어울리고

lee는 programmer의 객체 보다는 lee는 programmer의 인스턴스 라는 표현이 어울린다.

 

★클래스 함수

 

 

☆self: self라는 변수를 클래스 함수의 첫 번째 인수로 받아야 한다는 것은 파이썬만의 특징이다.

☆__init__: 객체를 만들때 항상 실행된다는 뜻의 함수.

 

★클래스 구조 만들기

대화형 인터프리터에서 pass란 문장만을 포함한 Fourcal 클래스를 만든다.

pass는 아무것도 수행하지 않는 문법. 임시로 코드 작성할때 주로 사용함

 

a=FourCal()로 a라는 객체를 먼저 만들고 type(a)로 a라는 객체가 어떤 타입인지 알아보았다.

a가 FourCal 클래스의 인스턴스임을 알수 있다.

 

★객체에 숫자 지정할수 있게 만들기

 

setdata 메서드의 입력인수

입력인수로 3개의 입력값을 받는다. 그런데 첫 번째 입력 인수는 특별한 의미를 갖는 self변수다.

 

a라는 객체를 만든다음 a.setdata(3,4)처럼 하면 FourCal 클래스의 setdata 메서드가 호출되고

setdata 메서드의 첫 번째 인수에는 자동으로 a라는 객체가 입력으로 들어가게 된다.

 

즉 setdata의 입력인수는 3개지만 a.setdata(3,4)처럼 2개의 입력값만 주어도 a라는 객체가 setdata 함수의

첫 번째 입력을 받는 변수인 self에 대입되게 된다.

 

 

a와 b라는 객체는 모두 first라는 변수를 가지고 있지만 변수의 값은 각각 다르다.

a,b 객체의 first변수는 고유의 저장 영역을 가지고 있는 객체 변수이기 때문이다.

 

객체 변수란??- 그 객체의 고유한 값을 저장할 수 있는 공간이다.

 

★더하기 기능 만들기

 

self.first+self.second= a.first+a.second

 

★곱하기 빼기 나누기 기능 만들기

 

★스토리 있는 클래스 만들기

 

내이름 출력해보기.

 

이동현이 여행을 가다 를 출력해 보자

 

__init__로 바꿔서 해보기

 

★클래스의 상속

상속: 물려받다 .

HouseLee 이라는 클래스가 Housedong 클래스를 상속받는다

 

★연산자 오버로딩

연산자 오버로딩이란 연산자를 객체끼리 사용할 수 있게 하는 기법

 

pey+man처럼 호출되면 __add__(self,other) 메서드의 self는 pey가 되고 other는 man이 된다.

 

 

'Python > Python' 카테고리의 다른 글

Python-오류 예외 처리  (0) 2017.06.11
Python-모듈  (0) 2017.06.10
Python-파일 읽고쓰기  (0) 2017.06.06
Python-함수  (0) 2017.06.06
Python-조건문(if문),반복문  (0) 2017.06.02

+ Recent posts