PYTHON 프로그래밍

본문 바로가기
사이트 내 전체검색


PYTHON 프로그래밍
PYTHON 프로그래밍

2. 사칙연산 클래스 만들기

페이지 정보

작성자 관리자 댓글 0건 조회 3,163회 작성일 20-07-17 19:03

본문

2. 사칙연산 클래스 만들기

클래스를 직접 만들며 배워 보자.


여기에서는 사칙연산을 쉽게 해주는 클래스를 만들어 볼 것이다. 

사칙연산은 더하기, 빼기, 나누기, 곱하기를 말한다.


클래스 구상하기


클래스는 무작정 만드는 것보다 클래스로 만든 객체를 중심으로 어떤 식으로 동작하게 할것인지 미리 구상을 한 후에 생각한 것들을 하나씩 해결하면서 완성해 나가는 것이 좋다.


사칙연산을 가능하게 하는 FourCal 클래스가 다음처럼 동작한다고 가정해 보자.


먼저 a = FourCal()를 입력해서 a라는 객체를 만든다.

>>> a = FourCal()



그런 다음 a.setdata(4, 2)처럼 입력해서 숫자 4와 2를 a에 지정해 주고

>>> a.setdata(4, 2)



a.add()를 수행하면 두 수를 합한 결과(4 + 2)를 돌려주고

>>> print(a.add())

6



a.mul()을 수행하면 두 수를 곱한 결과(4 * 2)를 돌려주고

>>> print(a.mul())

8



a.sub()를 수행하면 두 수를 뺀 결과(4 - 2)를 돌려주고

>>> print(a.sub())

2



a.div()를 수행하면 두 수를 나눈 결과(4 / 2)를 돌려준다.

>>> print(a.div())

2



이렇게 동작하는 FourCal 클래스를 만드는 것이 바로 우리의 목표이다.


클래스 구조 만들기


자, 그러면 지금부터 앞에서 구상한 것처럼 동작하는 클래스를 만들어 보자. 

제일 먼저 할 일은 a = FourCal()처럼 객체를 만들 수 있게 하는 것이다. 

일단은 아무 기능이 없어도 되기 때문에 매우 간단하게 만들 수 있다. 

다음을 따라 해 보자.

>>> class FourCal:

...     pass

... 

>>>



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

현재 상태에서 FourCal 클래스는 아무 변수나 함수도 포함하지 않지만 우리가 원하는 객체 a를 만들 수 있는 기능은 가지고 있다.


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


>>> a = FourCal()

>>> type(a)

<class '__main__.FourCal'>



위와 같이 a = FourCal()로 a 객체를 먼저 만들고 그다음에 type(a)로 a 객체가 어떤 타입인지 알아보았다. 

역시 객체 a가 FourCal 클래스의 객체임을 알 수 있다.


type 함수는 파이썬이 자체로 가지고 있는 내장 함수로 객체 타입을 출력한다. 


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


하지만 생성된 객체 a는 아직 아무런 기능도 하지 못한다. 

이제 더하기, 나누기, 곱하기, 빼기등의 기능을 하는 객체를 만들어야 한다. 

그런데 이러한 기능을 갖춘 객체를 만들려면 우선 a 객체에 사칙연산을 할 때 사용할 2개의 숫자를 먼저 알려주어야 한다.

다음과 같이 연산을 수행할 대상(4, 2)을 객체에 지정할 수 있게 만들어 보자.

>>> a.setdata(4, 2)



위 문장을 수행하려면 다음과 같이 소스 코드를 작성해야 한다.

>>> class FourCal:

...     def setdata(self, first, second):

...         self.first = first

...         self.second = second

...

>>>



앞에서 만든 FourCal 클래스에서 pass 문장을 삭제하고 그 대신 setdata 함수를 만들었다. 

클래스 안에 구현된 함수는 다른 말로 메서드(Method)라고 부른다. 

메서드도 클래스에 포함되어 있다는 점만 제외하면 일반 함수와 다를 것이 없다. 


setdata 메서드는 매개변수로 self, first, second 3개 입력값을 받는다. 
그런데 일반 함수와는 달리 메서드의 첫 번째 매개변수 self는 특별한 의미를 가진다.

다음과 같이 a 객체를 만들고 a 객체를 통해 setdata 메서드를 호출해 보자.
>>> a = FourCal()
>>> a.setdata(4, 2)



객체를 통해 클래스의 메서드를 호출하려면 a.setdata(4, 2)와 같이 도트(.) 연산자를 사용해야 한다.
setdata 메서드에는 self, first, second 총 3개의 매개변수가 필요한데 실제로는 a.setdata(4, 2)처럼 2개 값만 전달했다. 
왜 그럴까? 
그 이유는 a.setdata(4, 2)처럼 호출하면 setdata 메서드의 첫 번째 매개변수 self에는 setdata메서드를 호출한 객체 a가 자동으로 전달되기 때문이다. 

파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다. 
객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self를 사용한 것이다.  

더하기 기능 만들기

2개의 숫자 값을 설정해 주었으니 2개의 숫자를 더하는 기능을 방금 만든 클래스에 추가해 보자. 
우리는 다음과 같이 더하기 기능을 갖춘 클래스를 만들어야 한다.
>>> a = FourCal()
>>> a.setdata(4, 2)
>>> print(a.add())
6


이 연산이 가능하도록 다음과 같이 FourCal 클래스를 만들어 보자.
>>> class FourCal:
...     def setdata(self, first, second):
...         self.first = first
...         self.second = second
...     def add(self):
...         result = self.first + self.second
...         return result
...
>>>


새롭게 추가된 것은 add 메서드이다. 
 
a.setdata(4, 2)를 호출하면, a객체의 first, second 객체변수에는 각각 값 4와 2가 저장될 것이다. 
a.add()라고 호출하면 add 메서드가 호출되어 값 6이 출력될 것이다.  


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

이번에는 곱하기, 빼기, 나누기 등을 할 수 있게 프로그램을 만들어 보자.
>>> class FourCal:
...     def setdata(self, first, second):
...         self.first = first
...         self.second = second
...     def add(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, 8)
>>> a.add()
6
>>> a.mul()
8
>>> a.sub()
2
>>> a.div()
2
>>> b.add()
11
>>> b.mul()
24
>>> b.sub()
-5
>>> b.div()
0.375

 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.