파이썬 class를 이용하여 회원과 게시물 관리하는 프로그램 만들기

파이썬 class를 이용하여 회원과 게시물 관리하는 프로그램 만들기

·

3 min read

  1. Member 클래스와 Post 클래스를 정의하세요.

  2. Member 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.

    • 회원 이름 (name)

    • 회원 아이디 (username)

    • 회원 비밀번호 (password)

  3. Member 클래스에는 다음과 같은 메소드를 가지고 있어야 합니다.

    • 회원 정보를 print해주는 display (회원이름과 아이디만 보여주고 비밀번호는 보여줘서는 안됩니다!)
  4. Post 클래스에는 다음과 같은 속성을 가지고 있어야 합니다.

    • 게시물 제목 (title)

    • 게시물 내용 (content)

    • 작성자 (author) : 회원의 username 이 저장되어야 함!

  5. 회원 인스턴스를 세개 이상 만들고 members 라는 빈리스트에 append를 써서 저장해주세요

    1. members 리스트를 돌면서 회원들의 이름을 모두 프린트 해주세요
  6. 각각의 회원이 게시글을 세개 이상 작성하는 코드를 만들어주세요.(회원이 세명이명 총 9개 이상의 post 인스턴스가 만들어져야 합니다). 만들어진 게시글 인스턴스들은 posts 빈리스트에 append를 써서 저장해주세요

    1. for 문을 돌면서 특정유저가 작성한 게시글의 제목을 모두 프린트 해주세요

    2. for문을 돌면서 ‘특정 단어’가 content에 포함된 게시글의 제목을 모두 프린트 해주세요


1. Member 클래스에 속성 정의하고, 회원정보를 print 해주는 display 메서드 만들기

class Member:
    def __init__(self, name, username, password):
        # 인스턴스 변수 
        self.name = name
        self.username = username
        self.password = password
    def display(self):
        print(f'회원이름 : {self.name}, id : {self.username}')

2. Post 클래스에 속성 정의

class Post:
    def __init__(self, title, content,author):
        self.title = title     # 제목
        self.content = content     # 내용
        self.author = author    # 작성자 - 회원의 `username` 이 저장되어야 함

3. 회원 인스턴스를 3개 만들고 members 라는 빈 리스트에 append 써서 저장하기

members 리스트를 돌면서 회원들의 이름을 모두 프린트

members = []

# member1, member2 자체가 인스턴스 = 객체
member1 = Member('이창섭', 'changsub', 1234)
member2 = Member('이지은', 'jieun', 1234)
member3 = Member('김민정', 'minjeong', 1234)

members.append(member1)
members.append(member2)
members.append(member3)

for member in members:
    member.display()

4. 각각의 회원이 게시글을 세개 이상 작성하는 코드 작성

만들어진 게시글 인스턴스들은 posts 빈리스트에 append를 써서 저장

posts = []

author1 = Post('버거킹', '햄버거의 왕께서 만드신 버거', member1)
author2 = Post('허니버터칩', '한때 품절 대란', member1)
author3 = Post('신라면', '제일 무난하게 맛있어요', member1)

author4 = Post('오트밀', '인간사료', member2)
author5 = Post('불닭볶음면', '먹을때는 행복하지만..', member2)
author6 = Post('맥도날드', '맥도날드씨가 만드신 희대의 역!작! 이 햄버거', member2)

auhtor7 = Post('무파마', '마늘 더 넣으면 맛있어요', member3)
author8 = Post('맘스터치', "어머니께서 직접 만드신 고향의 맛 '그' 햄버거", member3)
author9 = Post('포카칩', '감 자 칩', member3)

posts.append(author1)
posts.append(author2)
posts.append(author3)
posts.append(author4)
posts.append(author5)
posts.append(author6)
posts.append(auhtor7)
posts.append(author8)
posts.append(author9)

코드가 너무 못생겨서 튜터님께 새로운 방법을 물어봤더니 더 깔끔하고, 공부하기 쉬운 방법을 알려주셨다

반복되는 코드를 최소화하고, 리스트 안에 딕셔너리를 넣은 후 한줄로 간결하게 객체를 생성하고

리스트에 추가한다.

post_contents = [
    {'title' : '버거킹', 'content' : '햄버거의 왕께서 만드신 버거', 'author' : member1},
    {'title' : '허니버터칩', 'content' : '한때 품절 대란', 'author' : member1},
    {'title' : '신라면', 'content' : '제일 무난하게 맛있어요', 'author' : member1},
    {'title' : '오트밀', 'content' : '인간사료', 'author' : member2},
    {'title' : '불닭볶음면', 'content' : '먹을때는 행복하지만..', 'author' : member2},
    {'title' : '맥도날드', 'content' : '맥도날드씨가 만드신 희대의 역!작! 이 햄버거', 'author' : member2},
    {'title' : '무파마', 'content' : '마늘 더 넣으면 맛있어요', 'author' : member3},
    {'title' : '맘스터치', 'content' : "어머니께서 직접 만드신 고향의 맛 '그' 햄버거", 'author' : member3},
    {'title' : '포카칩', 'content' : '감 자 칩', 'author' : member3}
]

posts = []

for post_content in post_contents:
    posts.append(
        Post(
            post_content['title'],
            post_content['content'],
            post_content['author'].username
        )
    )

  1. for 문을 돌면서 특정유저가 작성한 게시글의 제목을 모두 프린트

  2. for문을 돌면서 ‘특정 단어’가 content에 포함된 게시글의 제목을 모두 프린트

# 특정 '유저'가 작성한 게시글의 '제목' 프린트
for post in posts:
    if post.author == '이창섭':
        print(post.title)

# ‘특정 단어’가 content에 포함된 게시글의 '제목'을 모두 프린트
# ex) 햄버거, 라면, 과자
word_search = input('검색하고자 하는 단어를 적어주세요 : ')
for post in posts:
    if word_search in post.content:
        print(post.title)