강의노트 09. [객체지향] oop (상속실습)

|

패스트캠퍼스 컴퓨터공학 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

상속 실습

  • 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()