2023. 8. 21. 20:07ㆍ과제
용어 설명
- 클래스 : 클래스는 인스턴스의 설계도나 템플릿입니다. 객체의 속성(어트리뷰트)과 행위(메소드)를 정의하는 틀입니다. 예를 들어, 자동차 클래스는 자동차의 속성(색상, 모델 등)과 행위(가속, 정지 등)를 정의합니다.
- 인스턴스 : 클래스의 정의를 기반으로 실제로 생성된 객체를 인스턴스라고 합니다
- 메소드 : 클래스 함수라고도 합니다. 클래스 내에서 지정된 함수입니다. 자동차 클래스의 "가속"이나 "정지"와 같은 작업이 메소드의 예시입니다.
- 어트리뷰트 : 클래스 변수라고도 합니다. 클래스 내에서 변수를 지정할때 사용합니다. 자동차 클래스에서 "색상"이나 "모델"과 같은 특징이 어트리뷰트의 예시입니다.
아직 용어가 익숙하지 않으신 분들은 클래스 부분 복습이 필요할 수 있습니다
과제 내용:
- 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 라이브러리를 써서 회원 비밀번호를 해시화하여 저장하게 해주세요.
평가
- 클래스와 인스턴스 개념을 설명할 수 있는가?
- 메소드와 어트리뷰트(속성)을 설명할 수 있는가?
- 클래스를 정의할 수 있는가?
- 인스턴스를 생성할 수 있는가?
진행과정:
class Member1():
name = '보라돌이'
username = 'purple'
password = 'purple1'
class Member2():
name = '뚜비'
username = 'green'
password = 'green1'
class Member3():
name = '나나'
username = 'yellow'
password = 'yellow1'
m = Member1()
m = Member2()
m = Member3()
print("Your name is", m.name, "Your username is", m.username)
회원 이름과 username만 print 하라 그랬는데... 아 아무래도 이렇게 무식한 방법을 쓸리는 없다. list 로 묶어서 조금 더 똑똑하게 만들어 볼 수는 없을까.
class Member():
def __init__(self, name, username, password):
self.name = name
self.username = username
self.password = password
list = []
list.append(Member('보라돌이', 'purple', 'purple1'))
list.append(Member('뚜비', 'green', 'green1'))
list.append(Member('나나', 'yellow', 'yellow1'))
print(list[0], Member.name, Member.username)
Another trial... 에러먹음
class Member:
def __init__(self, name, username, password):
self.name = name
self.username = username
Member1 = Member("보라돌이", "purple", "eggplant")
Member2 = Member("뚜비", "green", "grass")
print(Member1.name, Member1.username)
print(Member2.name, Member2.username)
오 드디어 완성. 그치만 아직 1단계😂
참고한 사이트: https://www.freecodecamp.org/news/python-attributes-class-and-instance-attribute-examples/
그런데... print가 class 안에 있는 메소드가 아닌것 같은데... 맞는건가? 흐음... 일단 넘어가자
Python Attributes – Class and Instance Attribute Examples
When creating a class in Python, you'll usually create attributes that may be shared across every object of a class or attributes that will be unique to each object of the class. In this article, we'll see the difference between class attributes and instan
www.freecodecamp.org
#1,2 Member class의 속성 정의
class Member:
def __init__(self, name, username, password):
self.name = name
self.username = username
self.password = password
#5 Member instance 3개 만들기
Member1 = Member("보라돌이", "purple", "eggplant1")
Member2 = Member("뚜비", "green", "grass2")
Member3 = Member("나나", "yellow", "banana3")
#3 Member class에 회원정보를 print해주는 display
#(Member class의 메소드라고 부를 수 있는지는 모르겠다.)
print(Member1.name, Member1.username)
print(Member2.name, Member2.username)
print(Member3.name, Member3.username)
#1,4 Post class의 속성 정의
class Post(Member):
def __init__(self, title, content, author):
self.title = title
self.content = content
self.author = self.username
#5 members 빈 리스트에 append써서 회원 인스턴스 저장
members = []
members.append(Member1)
members.append(Member2)
members.append(Member3)
print(members[0].name, members[1].name, members[2].name)
오 마지막에 리스트에서 끙끙거리다 기술매니저님 만나서 해결하고 배우고 옴. 하 이게 뭐라고 오늘은 과제3번을 하루종일 했눼... 내일은 6번하고... 추가과제들 한번씩 쭉 돌면서 살 붙이기 해야겠다. 아 약간 고딩때 수학문제 풀던거 생각나네... 수학의 정석 집합편 1번문제 풀다가 하루 간 느낌이다ㅋㅋㅋㅋ고생해따ㅋㅋ
# 1,2 Member class의 속성 정의
class Member:
def __init__(self, name, username, password):
self.name = name
self.username = username
self.password = password
def add_member():
Member.add_member(input("Enter name: "), input(
"Enter username: "), input("Enter password: "))
# 5 Member instance 3개 만들기
member1 = Member("보라돌이", "purple", "eggplant1")
member2 = Member("뚜비", "green", "grass2")
member3 = Member("나나", "yellow", "banana3")
# 3 Member class에 회원정보를 print해주는 display
# (Member class의 메소드라고 부를 수 있는지는 모르겠다.)
print(member1.name, "'s username is ", member1.username)
print(member2.name, "'s username is ", member2.username)
print(member3.name, "'s username is ", member3.username)
# 5 members 빈 리스트에 append써서 회원 인스턴스 저장
members = []
members.append(member1)
members.append(member2)
members.append(member3)
print("Name of the members are",
members[0].name, members[1].name, members[2].name)
# 1,4 Post class의 속성 정의
class Post:
def __init__(self, title, content, author):
self.title = title
self.content = content
self.author = author
# 6 posts instance 3개 만들기
post1 = Post("오늘아침메뉴", "빵먹었다", member1.username)
post2 = Post("어제점심메뉴", "김밥먹었다", member2.username)
post3 = Post("어제저녁메뉴", "생선먹었다", member3.username)
# 6 posts 빈 리스트에 append써서 게시글 인스턴스 저장 / 제목 프린트 / 특정단어가 포함된 게시글의 제목 프린트
posts = []
posts.append(post1)
posts.append(post2)
posts.append(post3)
for t in posts:
print(t.author, "posted", t.title)
for t2 in posts:
if '먹었다' in posts:
print(t2.content) # error
post 클래스를 만들고, 거기에 append 하는것 까지 완료. 그런데 input으로 멤버info 랑, post 받아서 class에 넣는것을 아직 못하겠다...
'과제' 카테고리의 다른 글
| Python 과제 2. 가위바위보 게임 (0) | 2023.08.21 |
|---|---|
| Python 과제 1. Up down game 만들기 (0) | 2023.08.21 |