1. lex02_inheritance.py
# -*- coding: utf-8 -*-
# Cafe Management
# 카페에 togo(포장)라는 기능 추가 .
# togo를 하는 경우에 200원 비용이 추가
# 1.Event를 상속받는 Togo class를 정의
# 2.Togo 객체를 생성해서 메서드 붙러보기
# 3.Togo아닌 일반 Event 객체 생성하여 비교하기
# calculate() override 해보기
menu_table = {'americano': 3000, 'latte': 6000, 'icecream': 3000}
print(type(menu_table))
class Event():
def __init__(self, number):
#속성 만들기 (property): init()에서 만들기 (초기화)
self.id = number
self.order_list = {}
self.total=0
def order (self, menu) :
#print(menu)
self.order_list =menu
def print(self):
print('주문번호:', self.id)
for key, value in self.order_list.items():
print('{0:10} {1:5} {2:5} {3:5}'.format(key, value,menu_table[key], value*menu_table[key]))
print('Total: ', self.total)
def calculate(self) :
total =0
for key, value in self.order_list.items():
#print(key, value, menu_table[key], value*menu_table[key])
total += value*menu_table[key]
self.total = total
#상속
class Togo(Event) :
def calculate(self) :
super().calculate()
self.total+=200 #멤버변수. 인스턴스(객체) 변수
def print(self) :
super().print()
print('포장비용추가 ', 200)
#객체 (인스턴스 생성)
#매장주문
event= Event(1) #__init__()호출
event.order({"americano":2, "latte":3})
event.calculate()
event.print()
#Togo
togo = Togo(2)
togo.order({"americano":2, "latte":3})
togo.calculate()
togo.print()
2. lex_phonebook.py
# -*- coding: utf-8 -*-
# Phonebook
# 1.아이디(번호)
# 2. 이름
# 3.전화번호
# 메서드 :1. __init__(), 2. print()
# 객체를 만들어서 리스트에담아서 출력. (for문 이용)
#딕셔너리로 구성된 리스트
#1. emailbook : phonebook + email주소만 추가
#2. 객체 생성 print
#3. phone_dic리스트에서 읽어서 객체를 이메일이 있으면
# emailbook객체를 만들고 phonbook객체를 만든다.출력을 한다.
#json type
phone_dic= \
[
{'name':'leemin', 'number':'010-028-9382', 'email':'leemin@google.com' },
{'name':'shin', 'number':'017-821-6521'},
{'name':'parkchanho', 'number':'010-111-1111'}
]
#리스트로 구성된 리스트
#csv type
phone_list= \
[
['leemin', '010-028-9382'],
['shin', '017-821-6521'],
['parkchanho', '010-111-1111']
]
#class정의
class Phonebook() :
def __init__(self, num, name, phone_number) :
self.id=num;
self.name = name;
self.phone_number = phone_number
def print(self) :
print('{0:3} {1:10} {2:15}'.format(self.id, self.name, self.phone_number))
#객체생성#1 - 딕셔너리로 구성된 리스트
for i, p in enumerate(phone_dic) :
#print(p['name'], p['number'])
phonebook = Phonebook(i, p['name'], p['number'])
#print(phonebook.id, phonebook.name, phonebook.phone_number)
phonebook.print()
#객체생성#2 - 리스트로 구성된 리스트
for i, p in enumerate(phone_list) :
#print(p['name'], p['number'])
phonebook = Phonebook(i, p[0], p[1])
#print(phonebook.id, phonebook.name, phonebook.phone_number)
phonebook.print()
# Emailbook : Phonebook상속
class Emailbook(Phonebook) :
def __init__(self, num, name, phone_number, email) :
super().__init__(num,name, phone_number)
self.email = email
def print(self):
super().print()
print(self.email)
email = Emailbook(1, "shin", "008-999-9922", "shin@gmail.com")
email.print()
#객체생성#3 - 딕셔너리로 구성된 리스트에서 email이 있으면 email 객체를 만들고,
#아니면 phonebook을 만든다.
for i, p in enumerate(phone_dic) :
if 'email' in p : # key가 딕셔너리에 존재하는지에 따라 객체 다르게 생성
print(p['name'], p['number'], p['email'])
book = Emailbook(i, p['name'], p['number'], p['email'])
else :
print(p['name'], p['number'])
book = Phonebook(i, p['name'], p['number'])
#print(phonebook.id, phonebook.name, phonebook.phone_number)
book.print()
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_Python] 2020.01.31 (0) | 2020.02.03 |
---|---|
[단과_JAVA] 2020.01.31 (0) | 2020.02.03 |
[단과_JAVA] 2020.01.30 (0) | 2020.01.30 |
[단과_Python] 2020.01.29 (0) | 2020.01.29 |
[단과_JAVA] 2020.01.29 (0) | 2020.01.29 |