<외부 모듈 설치하기>
외부 모듈을 설치할 때는 명령 프롬프트 창에
*** pip 모듈 이름
으로 설치할 수 있습니다!!
flask
플라스크는 웹 개발을 할 때 사용하는 웹 개발 프레임워크입니다!
*** pip install flask
라이브러리와 프레임워크의 차이
라이브러리는 개발자가 모듈의 기능을 호출하는 형태를 말합니다! 정상적인 제어를 합니다
반면 프레임워크는 내부에 함수만 정의하고 직접적으로 무언가 진행하는 코드는 없습니다!
<함수 데코레이터>
@로 시작하는 구문을 데코레이터합니다!
데코레이터는 함수의 앞뒤에 꾸밀 부가적인 내용, 혹은 반복할 내용을 정의한 것 입니다!!
7-2 chapter 확인 문제
1. flask 오류 때문에 보류..
<객체>
객체는 여러가지 속성을 가질 수 있는 대상을 말합니다!
바로 예제로 가봅시당.
def create_students(name, korean, math, english, science)
return {
"name":name,
"korean":korean,
"math":math,
"english":english,
"science":science
}
students = [
create_student("윤인성", 87, 98, 88, 95),
create_student("오지은", 97, 100, 100, 57),
create_student("홍길동", 51, 99, 97, 66)
]
for student in students:
score_sum = student["korean"] + student["math"] + student["english"] + student["science"]
score_average = score_sum/4
1. create_students라는 함수에 매개변수로 name, korean, math, english, science를 넣어줍니다.
2. 딕셔너리를 리턴하는 함수를 만듭니다. 딕셔너리에 name을 해주게 되면 name 변수에 있는 값을 리턴합니다.
3. for문으로 create_student 함수를 하나하나 호출하고, name 변수에 "윤인성"을 korean 변수에 87을 .. 넣어준 후 연산을 합니다!
이런 코드가 너무 자주 사용되다 보니 만든게!!! 클래스입니다!
<클래스>
클래스는 객체를 조금 더 효율적으로 생성하기 위한 구문입니다.
*** class 클래스 이름:
클래스 내용 -> 이렇게 클래스를 생성하고
*** 인스턴트 이름(변수이름) = 클래스이름() -> 클래스를 사용해 객체를 생성합니다.
class Student:
pass
student = Student()
students = [
Student(),
Student(),
Student(),
Student(),
Student()
]
# 객체를 통해 학생 5명 선언
<생성자>
클래스 이름과 같은 함수를 생성자라고 하고, __init__ 라는 함수를 만들면 객체를 생성할 떄 처리할 내용을 작성할 수 있다!!
*** def __init__ (매개변수, 매개변수 ...)
** 클래스 내부의 함수는 첫 번째 매개변수로 반드시 self를 입력해야한다!!! self가 가지고 있는 속성에 접근할 때는 self.식별자 형태로 사용할 수 있따!
class Student:
def __init__(self, name, korean, math, english, science):
self.name = name,
self.korean = korean,
self.math = math,
self.english = english,
self.science = science
# students 리스트에 class 안 함수 호출
students = [
Student("윤인성", 87, 94, 92, 85),
Student("오지은", 97, 100, 100, 51),
Student("홍길동", 51, 94, 84, 66)
]
# Student 인스턴트 속성에 접근
students[0].name
students[0].korean
<메소드>
메소드는 클래스가 가지고 있는 함수입니다! 클래스 내부에 메소드를 만들 때는 생성자 선언하는 방법과 똑같지만 첫 번째 매개변수로 self 넣어주기!!!
*** class 클래스 이름:
def 메소드 이름(self, 추가적인 매개변수):
pass
class Student:
def __init__(self, name, korean, math, english, science):
self.name = name,
self.korean = korean,
self.math = math,
self.english = english,
self.science = science
def get_sum(self):
return self.korean + self.math + self.english + self.science
def get_average(self):
return self.get_sum() / 4
def to_string(self):
return "{}/t{}/t{}".format(self.name, self.get_sum(), self.get_average())
students = [
Student("윤인성", 94, 87, 66, 81),
Student("오지은", 97, 100, 100, 45),
Student("홍길동", 86, 84, 94, 16)
]
for student in students:
print(student.to_string)
이때 student.to_string은 어떠한 객체가 가지고 있는 기능을 사용했기 때문에 메소드라고 볼 수 있습니다!!
* 후기 * 이해가 된다! 근데 코드 짜보라고 하면 못 짤 듯.. 혼공파 끝나고도 계속 예제 만들면서 공부해야겠따!!!
chapter 8-1 확인 문제
1. 여러가지 타임 프로그램에 들어 있는 객체를 정리해보세요.
-> 페이스북 - 개인정보 : 이름, 나이, 생일, 이메일, 비밀번호 등
타임라인 글 : 작성자, 게시 시간, 좋아요 누른 친구, 댓글 등
그룹 정보 : 이름, 설명, 멤버 목록
-> 티스토리 - 개인정보 : 이름, 나이, 이메일, 비밀번호 등
글 : 작성자, 게시 시간, 조회수, 댓글 등
피드 : 구독중인 사람, 글, 추천 글 등
2. 같은 객체라도 다른 속성을 갖게 되는 경우 세가지를 적어보세요.
-> 학생 정보 : 나이스에는 성적 정보까지 들어가지만, 학생증을 만들때는 학교, 반, 번호 정도의 정보만 들어감
-> 건강 검진 : 학교에서 건강검진을 할 때는 키, 몸무게, 피검사 정도만 하지만 직접 병원에 가서 하면 MRI까지도 함
3. 객체 중 두 가지를 선택해 그 행위를 다섯 가지씩 생각해 적어 보세요.
-> 글 : 글을 적기 위해 글쓰기 버튼을 누른다. 임시저장에 글을 저장한다. 완료버튼을 눌러 글을 포스트 한다. 타인의 글에 댓글을 단다. 글을 수정하기 위해 수정하기 버튼을 누른다.
-> 피드 : 상대방을 구독한다. 상대방의 글을 읽는다. 상대방의 글에 좋아요를 누른다. 상대방의 글에 댓글을 단다. 새로고침을 해 새로운 글을 본다.
<클래스의 추가적인 구문>
- 어떤 클래스의 인스턴스인지 확인 -> instance(인스턴스, 클래스) 인스턴스와 클래스가 일치하면 True 아니면 False 리턴
- 특수한 메소드 - __eq__ (같다), __ne__ (같지 않다), __gt__ (크다), __ge__ (크거나 같다), __lt__ (작다), __le__ (작거나 같다)
- 클래스 변수와 메소드
*** class 클래스 이름:
클래스 변수 = 값
*** 클래스 이름.변수 이름
chapter 8-2 확인 문제
1. Student 객체를 숫자와 비교했을 때 학생의 성적 평균과 비교가 일어나게 해보세요.
class Student:
def __init__(self, name, korean, math, english, science):
self.name = name,
self.korean = korean,
self.math = math,
self.english = english,
self.science = science
def get_sum(self):
return self.korean + self.math + self.english + self.science
def get_average(self):
return get_sum()/4
def __eq__(self, value):
return self.get_average() == value.get_average()
def __ne__(self, value):
return self.get_average() != value.get_average()
def __gt__(self, value):
return self.get_average() > value.get_average()
def __ge__(self, value):
return self.get_average() >= value.get_average()
def __lt__(self, value):
return self.get_average() < value.get_average()
def __le__(self, value):
return self.get_average() <= value.get_average()
test = Student("오지은", 90, 90, 90, 90)
마지막 혼공파도 끝!! 마지막은 좀 어려워서 부실했지만.. 계쏙해서 복습할 예정 \(≧▽≦\)
'혼공파' 카테고리의 다른 글
혼공단 회고록.. 📖 (0) | 2023.08.16 |
---|---|
혼공파 5주차!!! 😋 (0) | 2023.08.06 |
혼공파 4주차~😁 (0) | 2023.07.25 |
혼공파 3주~~🫡🫡 (0) | 2023.07.17 |
혼공파 2주차~😊 (0) | 2023.07.11 |