파이썬 클래스 사용법 #2
다시 클래스에 대해 이어서 설명 해 보겠다.
원래 난해하고 쉽지 않은 내용이니 좌절하지 말고 끝까지 보길 바랍니다.
자 다른 예로 설명해 보겠다.
음료 자판기를 예를 들어 설명해 보겠다.
간단하게 돈 넣으면 음료수 2개중 한개를 선택해 음료수가 나오게 하겠다.
==========================================================
#!/usr/bin/python
# -*- coding: utf-8 -*-
total_money = 10
product = '음료1','음료2'
price = 2, 3
in_money = input("돈을 넣어주세요(2~3)")
sel_drink = input("음료를 선택해 주세요(1~2)")
if sel_drink == 1 and in_money >= 2:
print"%s 나왔습니다."%product[0]
total_money = total_money + 2
elif sel_drink == 2 and in_money >= 3 :
print"%s 나왔습니다." % product[1]
total_money = total_money + 3
print"자판기에 %d원 있습니다."%total_money
==========================================================
결과 :
돈을 넣어주세요(2~3)3
음료를 선택해 주세요(1~2)1
음료1 나왔습니다.
자판기에 12원 있습니다.
==========================================================
이제 여기서 거스름 돈도 주는 기능을 넣고 싶고 음료수도 더 추가 하고 싶다.
어떻게 되겠는가.. 프로그램 전반적으로 다시 다 수정 해야 된다.
하지만 다음과 같이 위의 기능을 클래스로 만들어 뒀으면
==========================================================
#!/usr/bin/python
# -*- coding: utf-8 -*-
class vend_machine :
total_money = 10
in_money = 0
sel = 0
product = '음료1', '음료2'
price = 2, 3
def input_money(self):
self.in_money = input('돈을 넣어주세요')
def get_drink(self):
sel = input('음료수를 선택해주세요')
if sel == 1 and self.in_money >= 2:
print"%s 나왔습니다." % self.product[0]
self.total_money = self.total_money + 2
elif sel == 2 and self.in_money >= 3:
print"%s 나왔습니다." % self.product[1]
self.total_money = self.total_money + 3
print"자판기에 %d원 있습니다." % self.total_money
vm = vend_machine()
vm.input_money()
vm.get_drink()
==========================================================
결과 :
돈을 넣어주세요3
음료수를 선택해주세요1
음료1 나왔습니다.
자판기에 12원 있습니다.
==========================================================
클래스 부분만 수정 하고
클래스를 사용하는 부분
(
vm = vend_machine()
vm.input_money()
vm.get_drink()
)
은 변경 할 필요가 없이 수정이 가능하다.
다음은 음료수를 추가해 보고 거스름돈도도 나오게 해보자
==========================================================
#!/usr/bin/python
# -*- coding: utf-8 -*-
class vend_machine :
total_money = 10
in_money = 0
sel = 0
product = '음료1', '음료2', '음료3'
price = 2,3,4
def input_money(self):
self.in_money = input('돈을 넣어주세요')
def get_drink(self):
sel = input('음료수를 선택해주세요')
if sel == 1 and self.in_money >= 2:
print"%s 나왔습니다." % self.product[0]
self.total_money = self.total_money + 2
self.in_money = self.in_money - 2
elif sel == 2 and self.in_money >= 3:
print"%s 나왔습니다." % self.product[1]
self.total_money = self.total_money + 3
self.in_money = self.in_money - 3
print"자판기에 %d원 있습니다." % self.total_money
print"거스름돈 %d원 있습니다." % self.in_money
self.in_money = 0
vm = vend_machine()
vm.input_money()
vm.get_drink()
==========================================================
결과 :
돈을 넣어주세요5
음료수를 선택해주세요1
음료1 나왔습니다.
자판기에 12원 있습니다.
거스름돈 3원 있습니다.
==========================================================
클래스만 수정 하였고 클래스를 사용하는 부분은 전혀 수정을 가하지 않았다.
또한 이렇게 클래스를 만들어 두면 다른 프로그램에서 사용 할 수 있다.
이것을 프로그램의 재 사용성이라고 하며
재 사용성을 높여 프로그램의 생산성, 유지보수성을 향상 시킬수 있다.
이전 클래스 설명 가기 ====> click
다음 클래스 설명 가기 ====> click