본문 바로가기
Programming/Python

[Python] 클래스(Class) 1편 - 기본 개념 이해하기 / 사칙연산 계산기 클래스 만들기

by EunjiBest 2022. 3. 4.

Class는 항상 볼 때마다 책을 뒤져보는 것같다.

그래서 이번 기회에 포스팅을 해보며 나도 함께 다시 한 번 정리해보는 

글을 써보기로 하겠다.

 

 

클래스 & 객체

 

비유를 해보도록 하겠다.

 

과자를 찍어내는 틀 = class(클래스)

찍어서 만들어낸 과자 = object(객체)

 

클래스로 만든 객체에는 중요한 특징이 있는데,

각 객체마다 고유한 성격을 가진다.

즉, 하나의 과자를 베어 먹는다해서 다른 과자에 영향을 주지 않는다.(독립)

 

class Cookie:
  pass

 

클래스의 간단한 예이다.

아무런 기능을 가지고 있는 클래스의 틀을 만들어봤다.

 

이제 클래스의 객체를 만들어보겠다.

 

a = Cookie()
b = Cookie()

 

클래스 Cookie()의 결과값을 돌려받은 a와 b가 객체가 된다.

마치 함수를 사용해서 결괏값을 리턴받는 것과 같다고 생각하면 된다.

 

 

 

 

 

실습 - 사칙연산 클래스 만들기

 

클래스를 만들기 전에 먼저 어떻게 만들지 구상을 해보도록하자.

 

1. 사칙연산 클래스를 만들 것이고,

2. 사친연산을 하려면 최소 2개의 숫자를 입력받아야해, -> setdata 메서드 사용

3. 더하기 기능이 필요해. -> add 메서드 사용

4. 빼기 기능이 필요해. -> sub 메서드 사용

5. 나누기 기능이 필요해. -> div 메서드 사용

6. 곱하기 기능도 필요해 -> mul 메서드 사용

.

.

.

이런식으로 클래스가 어떻게 동작을 해야하는 구상을 한 후

하나씩 해결하면서 완성을 하는 것이 좋다.

 

 

위에서 구상한 것을 코드로 하나씩 입력해보자.

 

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

 

a = FourCal()

 

2. a.setdata(4,2)처럼 입력해서 숫자 4와 2를 a에 지정한다.

 

 

a.setdata(4,2)

 

3~6. a.add(), a.mul(), a.sub(), a.div()를 수행해본다.

 

print(a.add())
print(a.mul())
print(a.sub())
print(a.div())

 

각각의 코드를 써봤으니, 

이제는

클래스를 만드는 문법 안에 적용시키면 된다.

 

class FourCal:
  pass

 

기본적인 클래스의 틀을 만들어보았다.

참고로 pass는 아무것도 수행하지 않는 문법이다. 임시로 코드를 작성할 때 쓰인다.

 

a = FourCal()

 

a라는 객체를 생성한다. (위 구상에서 1번)

현재 a라는 객체는 아무 기능을 가지고 있지 않는다.

 

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

 

그 전에 a객체에 사칙연산을 할 때 사용할 2개의 숫자를 알려줘야한다. (위 구상에서 2번)

 

a.setdata(4,2)

 

setdata라는 함수가 없으므로 만들어 주어야

위 코드가 실행이 된다.

 

class FourCal:

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

 

FourCal 클래스에서 임시로 작성했던 pass를 지우고

def로 setdata 함수를 만들었다.

 

이런식으로 클래스 안에서 구현되는 함수는 메서드(Method)라고 부른다.

 

다시 함수를 살펴보자면

매개변수가 (self, first, second) 3개인 것을 볼 수 있다.

받는 숫자는 2개인데 왜 3개가 필요할까?

 

self는 자동으로 setdata를 호출한 객체 a가 전달된다.

그럼 first에는 a.setdata의 첫번째 변수 4,

second에는 a.setdata의 두번째 변수 2가 들어가게 된다.

 

따라서 

 

self.first = 4
self.second = 2

 

다시말해 

 

a.first = 4
a.second = 2

 

이렇게 해석이 가능하다.

 

 

다음은 더하기 기능을 만들어 보겠다. (위 구상에서 3번)

 

class FourCal:

  def setdata(self, first, second):
 	self.first = first
  	self.second = second
    
  def add(self):
    result = self.first + self.second
    return result

 

지금까지 만들었던 클래스에

더하기를 해주는 함수(메서드)를 하나 만들었다.

 

add 메서드의 매개변수는 self이고 result로 반환한다.

self에는 객체 a가 자동으로 입력이 된다.

 

따라서 result는 a의 첫번째 값, b의 두번째 값을 더한 값이 나온다.

 

 

이런식으로 나머지, 

곱하기 빼기 나누기 등 여러 프로그램을 만들 수 있다.(위 구상에서 4~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)


>>> print(a.add())
6
>>> print(a.sub())
2
>>> print(a.div())
2.0
>>> print(a.mul())
8
>>> print(b.add())
11
>>> print(b.sub())
-5
>>> print(b.div())
0.375
>>> print(b.mul())
24

 

FourCal( ) 의 객체 a와 b를 만들고

a.setdata에 4,2

b.setdata에 3,8 을 넣고

계산을 해보았다.

 

여기서 중요한 것은,

객체 a와 b가 영향을 받지 않고 완전한 독립이라는 점이다.

 

 

 

 

 

 

 

 

 

 

이 글은 '점프 투 파이썬' 책을 참고한 포스팅입니다.

반응형

댓글