티스토리 뷰
연락처(이름, 전화번호, 이메일)을 추가, 삭제, 검색, 합치기(연락처+연락처) 등의 기능을 가진 클래스를 구현해 보자
class Contact:
def __init__(self, name=None, phone=None):
self.name = name
self.phone = phone
def __eq__(self, other):
return any([v1 == v2 for v1, v2 in zip(self.__dict__.values(), other.__dict__.values())])
def __str__(self):
return f"{self.__dict__}"
class Book:
def __init__(self, pages=None):
self.pages = pages if pages else list()
def add(self, page):
self.pages.append(page)
def index(self, page):
return self.pages.index(page) if page in self.pages else None
def __contains__(self, page):
return page in self.pages
def __add__(self, other):
return Book(self.pages + other.pages)
def __str__(self):
return "\n".join(map(str, self.pages))
book1 = Book()
book1.add(Contact("kim", "010-2222-3333"))
book1.add(Contact("lee", "010-2222-4444"))
contact = Contact(phone="010-2222-44444", name="lee")
if contact in book1:
print(book1.index(contact))
book2 = Book()
book2.add(Contact("choi", "010-2222-5555"))
book1 += book2
print(book1)
하드코딩 하지 않고 명령어로 구현
class Person:
def __init__(self, name=None, phone=None):
self.name = name
self.phone = phone
def __eq__(self, other):
return any([v1 == v2 for v1, v2 in zip(self.__dict__.values(), other.__dict__.values())])
def __str__(self):
return f"{self.__dict__}"
class Book(list):
def filter(self, t):
return tuple([i for i, v in enumerate(self) if v == t])
def __str__(self):
return "\n".join(map(str, self))
if __name__ == '__main__':
"""
Example
>>> add James_Kim 010-1234-5678
>>> find James_kim _
>>> find _ 010-1234-5678
"""
functions = {"add": lambda ins, param, cls: ins.append(cls(*param)),
"find": lambda ins, param, cls: ins.filter(cls(*param))}
contact = Book()
while True:
commend, *params = input().split(" ")
if commend in functions and len(params) is len(Person().__dict__):
print(f"result={functions[commend](contact, params, Person)}\n{contact}")
else:
print("Invalid instruction")
'python lecture > project' 카테고리의 다른 글
[blockchain] 블록체인 예제 (0) | 2020.05.07 |
---|---|
[python] 해시의 무결성 (0) | 2020.05.07 |
[edu] pillow (영상 처리) (0) | 2019.03.19 |
[edu] sqlite3 import/export to csv (0) | 2019.02.07 |
[edu] 가위바위보 게임 (랜덤, 확률, 결과 예측) (0) | 2019.01.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Tistory
- PuTTYGen
- 파이썬 독학
- 모바일 테마 적용
- Python
- wsgi
- 플러스친구 자동응답
- 모바일 스킨 적용
- GIT
- pycrypto
- 이미지 비교
- 면접정답
- 장고 카톡 자동응답
- 문과 코딩
- gitignore
- 엑셀 비교
- 파이썬 강좌
- 문서 비교
- 파이썬 프로그래밍
- 파이썬 입문
- 파이썬
- admin.py
- django chatbot
- chatbot
- virtualenv
- 장고 플러스친구 자동응답
- 장고
- django
- gitlab
- 면접답변
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함