내용:
- Member 클래스와 Post 클래스를 정의하세요.
- Member 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.
- 회원 이름 (name)
- 회원 아이디 (username)
- 회원 비밀번호 (password)
- Member 클래스에는 다음과 같은 메소드를 가지고 있어야 합니다.
- 회원 정보를 print해주는 display (회원이름과 아이디만 보여주고 비밀번호는 보여줘서는 안됩니다!)
- Post 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.
- 게시물 제목 (title)
- 게시물 내용 (content)
- 작성자 (author) : 회원의 username 이 저장되어야 함!
- 회원 인스턴스를 세개 이상 만들고 members 라는 빈리스트에 append를 써서 저장해주세요
- members 리스트를 돌면서 회원들의 이름을 모두 프린트 해주세요
- 각각의 회원이 게시글을 세개 이상 작성하는 코드를 만들어주세요.(회원이 세명이명 총 9개 이상의 post 인스턴스가 만들어져야 합니다). 만들어진 게시글 인스턴스들은 posts 빈리스트에 append를 써서 저장해주세요
- for 문을 돌면서 특정유저가 작성한 게시글의 제목을 모두 프린트 해주세요
- for문을 돌면서 ‘특정 단어’가 content에 포함된 게시글의 제목을 모두 프린트 해주세요
추가 도전 과제:
- input을 이용하여 Member 인스턴스 만드는것을 사용자가 터미널에서 할 수 있게 해주세요.
- post도 터미널에서 생성할 수 있게 해주세요.
- (심화)비밀번호 해싱이 무엇인지 공부한 후 hashlib 라이브러리를 써서 회원 비밀번호를 해시화하여 저장하게 해주세요.
import hashlib
class Member:
def __init__(self, name, username, password):
self.name = name
self.username = username
self.password = self._hash_password(password)
def display(self):
print(f"이름: {self.name}, 아이디: {self.username}")
def _hash_password(self, password):
return hashlib.sha256(password.encode()).hexdigest()
class Post:
def __init__(self, title, content, author):
self.title = title
self.content = content
self.author = author
def create_member():
name = input("이름을 입력하세요: ")
username = input("아이디를 입력하세요: ")
password = input("비밀번호를 입력하세요: ")
return Member(name, username, password)
def create_post(author):
title = input("게시물 제목을 입력하세요: ")
content = input("게시물 내용을 입력하세요: ")
return Post(title, content, author)
def main():
members = []
posts = []
# 회원 인스턴스 생성
for _ in range(3):
member = create_member()
members.append(member)
# 회원 이름 출력
print("회원 이름 목록:")
for member in members:
print(member.name)
# 회원이 게시글 작성
for member in members:
for _ in range(3):
post = create_post(member.username)
posts.append(post)
# 특정 유저가 작성한 게시글 제목 출력
print("\n특정 유저가 작성한 게시글 제목:")
for post in posts:
if post.author == members[0].username:
print(post.title)
# 특정 단어가 포함된 게시글 제목 출력
keyword = input("\n게시글 내용에 포함된 단어를 입력하세요: ")
print(f"'{keyword}'가 포함된 게시글 제목:")
for post in posts:
if keyword in post.content:
print(post.title)
if __name__ == "__main__":
main()
중요한점
- 클래스와 인스턴스 개념을 설명할 수 있는가?
- 메소드와 어트리뷰트(속성)을 설명할 수 있는가?
- 클래스를 정의할 수 있는가?
- 인스턴스를 생성할 수 있는가?