1. 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) :
return '{0:3} {1:10} {2:15} '.format(self.id, self.name, self.phone_number)
# Emailbook : Phonebook상속
class Emailbook(Phonebook) :
def __init__(self, num, name, phone_number, email) : #부모의 __init__()을 override
super().__init__(num,name, phone_number)
self.email = email
def print(self): #부모의 print()를 override
text = super().print() #text: 지역변수
return text + self.email
#객체생성#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()
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)
print(book.print())
2. lec03_static.py
# -*- coding: utf-8 -*-
#self: 인스턴스를 가리킴.
#변수 타입
#1. 인스턴스 변수 : 인스턴스가 생성되어야 접근. 각인스턴스가 각각의 인스턴스 변수를 소유.
#2. 클래스 변수 : 클래스 선언만으로 접근가능. 모든 인스턴스가 공유. 한 클래스에 하나만 존재
#메서드 타입
#1. 인스턴스 메서드 : 인스턴스가 생성되어야 접근 가능
#2. 클래스 메서드 : 클래스 선언만으로 접근가능
#학생 클래스
#멤버 변수 : 이름 name, 전공 major
#메서드: 생성자, 출력하는 메서드
#인스턴스 생성. 메서드 사용하여 출력
#총학생수를 알고 싶은 경우.
class Student() :
#클래스 변수
count=0
def __init__(self, name, major) :
Student.count +=1 # 클래스 변수
self.id = Student.count
self.name = name
self.major = major
#인스턴스 메서드
def print(self) :
print('{:2} : {:15} {:10}'.format(self.id, self.name, self.major))
#클래스 메서드 (데커레이터 사용: 인터프리터에게 알려줌 )
@classmethod
def howmany(cls) : # clss는 class를 의미한다. 키워드는 아님.
print("현재 학생수" , cls.count)
#클래스 변수는 클래스이름으로 접근해야함.인스턴스로 접근도 가능.
print(Student.count)
Student.howmany()
#인스턴스 생성
student= Student("shin", "computer")
student.print()
student2= Student("korea_academy", "computer science")
student2.print()
print(Student.count)
print(student.count) #클래스 변수를 인스턴스로 접근.
student.howmany()
student2.howmany()
Student.howmany()
3. lex04_phonebookmenu.py
** 완성된 코드 아님, 다음 시간에 완성시키기로 함 **
# -*- coding: utf-8 -*-
#phonebook menu :phonebook 리스트 관리
# 초기화
#1.출력
#2.추가
#3.수정
#4.삭제
#9.프로그램 종료
phone_list= \
[
['leemin', '010-028-9382'],
['shin', '017-821-6521'],
['parkchanho', '010-111-1111']
]
class Phonebook() :
count =0
def __init__(self, name, phone_number) :
self.id= Phonebook.count;
self.name = name;
self.phone_number = phone_number
Phonebook.count+=1
def print(self) :
return '{0:3} {1:10} {2:15} '.format(self.id, self.name, self.phone_number)
#초기화 phonebook_list에 기본데이터를 입력
phonebook_list=[]
for phone in phone_list:
#print(phone)
#print(phone[0],phone[1])
# 인스턴스 생성
pb = Phonebook(phone[0], phone[1])
#리스트에 추가
phonebook_list.append(pb)
def print_phonebook() :
for phonebook in phonebook_list :
print(phonebook.print())
def add_phonebook() :
#사용자로부터 이름과 전화번호를 입력받는다
#이름과 전화번호를 이용하여 객체를 만든다.
#phonebook_list 리스트에 추가한다.
pass
def update_phonebook() :
pass
def delete_phonebook():
#사용자로부터 id를 입력받는다.
#id와 동일한 id를 갖는 객체를 phonebook_list에서 찾는다.
#리스트에서 삭제한다. remove()를 사용
pass
while True:
print('1:출력 2:추가 3:수정 4:삭제 9: 종료')
#input을 받는다. menu로 받습니다.
menu=int(input('메뉴를 입력하세요 > '))
#input이 9면 break
if menu == 9 :
break
if menu == 1:
print_phonebook()
elif menu == 2:
add_phonebook()
elif menu == 3 :
update_phonebook()
elif menu == 4 :
delete_phonebook()
print('프로그램을 종료합니다')
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_Python] 2020.02.03 (0) | 2020.02.04 |
---|---|
[단과_JAVA] 2020.02.03 (0) | 2020.02.04 |
[단과_JAVA] 2020.01.31 (0) | 2020.02.03 |
[단과_Python] 2020.01.30 (0) | 2020.01.30 |
[단과_JAVA] 2020.01.30 (0) | 2020.01.30 |