사칙연산 클래스 만들기
수를 입력받으면 사칙연산을 할 수 있는 클래스를 만들어 본다고 할 때
생각을 해야함.
무엇이 필요한가?
일단 연산을 하려면 두 숫자를 입력받아야하고
사칙연산(+, -, *, /) 기능을 넣어야 함.
사칙연산을 하는 클래스의 이름을 FourCal 로 임의로 정의하고 만들어보자.
class FourCal:
pass
껍데기만 있는 FourCal 클래스를 만들었음.
a라는 인스턴스를 만들어보자.
a = FourCal()
그다음 무엇을 해야할까?
숫자를 입력받아야 하는 기능을 만들자.
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
pass 문장을 지우고 setdata 함수를 만들었음.
만든 클래스함수는 메서드라고도 함.
setdata 메서드는 self, first, second 라는 3개의 입력값을 받음.
하지만 일반적인 함수와달리 메서드의 첫 번째 입력 인수는 특별한 의미를 갖는 self 라는 변수
a = FourCal()
a.setdata(4, 2)
→ self:객체 a, first : 4, second : 2
setdata 의 입력인수는 a 라는 인스턴스가 첫번째 입력 변수인 self 에 대입됨.
위의 a.setdata(4, 2) 를 통해
self.first = 4
self.second = 2
가되 었고
이건 다시
a.first = 4
a.second = 2
가 된다고 보면됨.
객체를 하나 더만들어보자
b = Fourcal()
b.setdata(3, 7)
print(b.first)
3
print(a.first
4
a 와 b라는 객체 모두 first 라는 변수를 가지고 있지만
변수의 값은 각기다름.
a 와 b객체는 모두 고유한 저장 영역을 가지고 있기 때문.
객체의 변수(self.first) 는 그 객체에서만 사용되는 값임.
이제 다시 돌아가서 더하기 기능을 추가해보자.
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
여기에 메서드를 하나 더추가하면 됨.
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
def sum(self):
result = self.first + self.second
return result
self.first + self.second 는 a.first + a.second로 해석 할 수 있음.
return = 4 + 2
print(a.sum())
6
이제 나머지 기능도 싹 다 추가해보자.
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
def sum(self):
result = self.first + self.second
return result
def sub(self):
result = self.first - self.second
return result
def mul(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)
a.sum()
1
b.sum()
10
a.sub()
2
b.sub()
-4
a.mul()
8
b.mul()
21
a.div()
2
b.div()
0
a 객체와 b 객체는 서로 다른 저장 공간을 가지고 있어서
완전히 독릭접으로 동작함.
클래스에 의해서 생성된 객체들은 다른 객체들과 언전히 다른 저장 공간을 가지고
독립적으로 동작하는 것을 잊지마시길 ㅎㅎ
'파이썬 복습' 카테고리의 다른 글
4/19 클래스(4/4) (0) | 2018.04.19 |
---|---|
4/13 클래스 (2/4) (0) | 2018.04.13 |
4/13 클래스 (1/4) (0) | 2018.04.13 |
4/3 연습문제 (0) | 2018.04.03 |
4/2 파일 읽고 쓰기 (0) | 2018.04.02 |