강의노트 09. [객체지향] oop (상속실습)
09 Apr 2017 |패스트캠퍼스 컴퓨터공학 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
상속 실습
- Person 이라는 부모 클래스를 갖는 Retailer 클래스와 Buyer 클래스를 작성한다.
- 수업자료
Person 클래스
# 공통 속성을 뽑아서 부모 클래스 Person을 정의
# class_person.py
class Person:
def __init__(self, name, age, money):
self.name = name
self.age = age
self.money = money
def give_money(self, other, how_much):
if how_much <= self.money:
other.money += how_much
self.money -= how_much
else:
print('you don\'t have enough money')
def showMyInfo(self):
print('{0} has {1}'.format(self.name, self.money))
# 테스트 코드
# 만약 이 파일이 import 모듈이 아니라 메인함수일 때 실행
if __name__ == '__main__':
p1 = Person('sunshine', 25, 5000)
p2 = Person('monkey', 21, 1000)
p1.give_money(p2, 500)
p1.showMyInfo()
p2.showMyInfo()
Seller 클래스
# class_seller.py
from class_person import Person
class Seller(Person):
price = 1000
def __init__(self, name, age, money, product_num):
super(Seller, self).__init__(name, age, money)
self.product_num = product_num
def sell(self, other, how_many):
if self.product_num >= how_many and other.money >= self.price * how_many:
self.product_num -= how_many
other.product_num += how_many
self.money += self.price * how_many
other.money -= self.price * how_many
else:
print('상품이 부족하거나 돈이 부족합니다.')
def showMyInfo(self):
super().showMyInfo()
print('I\'m seller. I have {} products'.format(self.product_num))
Buyer 클래스
# class_buyer.py
from class_person import Person
class Buyer(Person):
def __init__(self, name, age, money, product_num):
super(Buyer, self).__init__( name, age, money)
self.product_num = product_num
def buy(self, other, how_many):
if self.money >= other.price * how_many and other.product_num >= how_many:
self.product_num += how_many
other.product_num -= how_many
self.money -= other.price * how_many
other.money += other.price * how_many
else:
print('상품이 부족하거나 돈이 부족합니다.')
def showMyInfo(self):
super().showMyInfo()
print('I\'m buyer. I have {} products'.format(self.product_num))
메인함수
#class_main.py
from class_person import Person
from class_seller import Seller
from class_buyer import Buyer
p1 = Seller("greg", 35, 10000, 100)
p2 = Buyer("taehwan", 21, 10000, 0)
p1.showMyInfo()
print('\n')
p2.showMyInfo()
p1.sell(p2, 3)
p2.buy(p1, 3)
print('\n')
p1.showMyInfo()
print('\n')
p2.showMyInfo()