목록개인공부(WEB, Python, DB)/Python (176)
ChainSmoker’s Block

[05. 파이썬 날개 달기] -1. 클래스 ===================사칙연산 클래스 만들기 : 1_13에 이어 설명. -객체에 숫자 지정할 수 있게 만들기 앞에서 생성된 객체 a는 아직 아무런 기능을 하지 못한다. 이제 더하기/나누기/곱하기/빼기 등의 기능을 하는 객체를 만드는 것이 필요하다. 그런데 이러한 기능을 갖춘 객체를 만들기 위해 우선 a객체에 사칙연산(+, -, *, /)을 할 때 사용할 2개의 숫자를 먼저 알려주어야 한다. 아래와 같이 연산을 수행할 대상(4, 2)을 객체에 지정할 수 있게 만들어 보자. 위 예시의 수행을 위해 아래와 같은 소스코드 작성이 필요하다.

[05. 파이썬 날개 달기] -1. 클래스 ===================사칙연산 클래스 만들기 : -클래스 구조 만들기 이제부터 앞과 같이 동작하는 클래스를 만들어보자. 먼저 a = CalF처럼 객체를 만들 수 있게 하는 과정을 거치는 것이다. 매우 간단하게 시작하자. 대화형 인터프리터언어(파이썬)에서 pass란 문장만을 포함한 CalF클래스를 만든다. 현재 해당 상태에서는 CalF클래스는 아무 변수나 함수도 포함하지 않지만 우리가 원하는 객체 a를 만들 수 있는 기능은 가지고 있다. 확인하는 아래 예시과정을 살펴보자. 위 예시와 같이 a = CalF()로 a객체를 먼저 만들고 그 다음에 type(a)로 a객체가 어떤 타입인지 알아볼 수 있었다. 역시 객체 a가 CalF클래스의 객체임을 알 수 있다.

[05. 파이썬 날개 달기] -1. 클래스 ===================사칙연산 클래스 만들기 : 1_11에 이어 설명. a.mul()을 수행할 경우 두 수를 곱한 결과(4*2)를 돌려주고 결괏값은 8을 출력. a.sub()를 수행하면 두 수를 뺀 결과(4-2)를 돌려주고 결괏값은 2를 출력. a.div()를 수행하면 두 수를 나눈 결과(4/2)를 돌려주고 결괏값은 2를 출력. 이렇게 동작하는 CalF()클래스를 만드는 것이 이후의 목표이다.

[05. 파이썬 날개 달기] -1. 클래스 ===================사칙연산 클래스 만들기 : 1_10에 이어 설명. 사칙연산을 가능하게 하는 CalF클래스를 다음과 같이 동작한다고 가정하다. 먼저 a = CalF()를 입력해서 a라는 객체를 생성한다. 다음으로 a.setdata(4, 2)처럼 입력하여 숫자 4와 2를 a에 지정해준다. a.add()를 수행하면 두 수를 합산한 결과(4+2)를 돌려준다. 결과로는 6이 출력된다.

[05. 파이썬 날개 달기] -1. 클래스 ===================사칙연산 클래스 만들기 : 클래스를 직접 만들면서 배워보는게 좋다. 사칙연산을 쉽게 해주는 클래스를 만들어 볼 예정. 사칙연산은 더하기.빼기.나누기.곱하기같은 연산을 말한다.(당연히 알고있을 거라 생각한다.) -클래스를 어떻게 만들지 먼저 구상하기 클래스는 무작정 만드는 것보다 클래스로 만든 객체를 중심으로 어떤 식으로 동작하게 할 것인지 미리 구상을 한 후에 생각한 것들을 하나씩 해결해가면서 완성해 나가는 것이 좋다.

[05. 파이썬 날개 달기] -1. 클래스 ===================클래스와 객체 : 1_8에 이어 설명. 다음 예시는 파이썬 클래스의 가장 간단하게 표현가능한 예이다. 예시 클래스는 아무 기능도 갖고 있지 않은 껍질뿐인 클래스라 할 수 있다. 그러나 이렇게 껍질뿐인 클래스도 객체를 생성할 수 있는 기능을 가지고 있다. '과자틀(클래스)'로 '과자(객체)'를 만드는 것처럼 말이다. 객체는 클래스로 만들며 1개의 클래스는 무수하게 많은 클래스를 만들어낼 수 있다. Cookie클래스처럼 말이다. 객체를 만드는 방법은 아래 예시와 같다. Cookie()의 결괏값을 돌려받은 a와 b가 바로 객체이다. 마치 함수를 사용해서 그 결괏값을 돌려받는 모습과 흡사하다. 객체와 인스턴트의 차이 : 클래스로 만든 ..

[05. 파이썬 날개 달기] -1. 클래스 ===================클래스와 객체 : 클래스를 가장 잘 설명해주는 예시를 보자. 과자를 만드는 과자틀과 그것을 사용해 만든 과자가 있다. 여기서 설명하는 클래스는 과자 틀과 비슷하다. 클래스란 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계 도면이고, 객체란 클래스로 만든 피조물을 뜻한다. *과자틀 -> 클래스(class) *과자틀을 이용해서 만든 과자 -> 객체(object) 클래스로 만든 객체에는 중요한 특징이 있는데, 바로 객체마다 고유한 성질/성격을 가진다는 것이다. 과자 틀로 만든 과자에 구멍을 뚫거나 조금 베어 먹더라도 다른 과자에는 아무 영향이 없는 것과 마찬가지로 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다.

[05. 파이썬 날개 달기] -1. 클래스 ===================클래스는 왜 필요한가? : 1_6에 이어 설명. Calculator 클래스로 만든 별개의 계산기 cal1, cal2(파이썬에서는 이것을 객체라고 부른다.)가 각각의 역할을 수행한다. 그리고 계산기(cal1, cal2)는 그 결괏값 역시 다른 계산기의 결괏값과 상관없이 독립적 값을 유지한다. 클래스를 사용하게 되면 계산기의 대수가 늘어나더라도 객체를 생성만 하면 되기 때문에 함수를 사용하는 경우와는 달리 매우 간단해진다. 만약 빼기(-) 기능을 더하려면 Calculator 클래스에 아래 예시와 같은 빼기 기능 함수를 추가해 주면 된다. 클래스의 이점은 단순이 이것만이 아니다. 그러나 이것 하나만으로도 '도대체 왜 클래스가 필요로한..

[05. 파이썬 날개 달기] -1. 클래스 ===================클래스는 왜 필요한가? : 1_5에 이어 설명. 계산기 1의 결괏값이 계산기 2에 아무 영향을 끼치지 않음을 확인할 수 있다. 하지만 계산기가 3개, 5개, 10개로 점점 더 많이 필요해진다면 어떻게 해야 하는가? 그 때마다 전역 변수와 함수를 추가할 것인가? 여기에 빼기나 곱하기 등의 기능을 추가해야 한다면 상황은 점점 더 어려워질 수 있다. 아직 클래스에 대해서 배우지는 않았지만, 위와 같은 경우에는 클래스를 사용하면 아래와 같이 간단하게 해결 가능하다. 프로그램을 실행하면 함수 2개를 사용했을 때와 동일한 결과가 출력된다.