혼공파

혼공파 6주차..!

오쟝 2023. 8. 16. 18:52

 

<외부 모듈 설치하기>

외부 모듈을 설치할 때는 명령 프롬프트 창에

*** 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