AI School 8기 (LIKELION, 22.12~23.05)

[AI School/TIL] Python 5일차_23.01.06

data_start_ 2024. 2. 23. 15:51

2023.01.06 (금) 파이썬 5번째 강의를 들었습니다.

 

[Python 문법 5]

오늘은 오늘은 class에 대해서 더 부가적인 개념을 배우는 시간이었습니다.

 

1. Getter, Setter : 객체의 내부 변수에 접근할 때, 특정 메서드를 거쳐서 접근할 수 있도록 하는 방법

(자동차 부품을 사용자가 마음대로 바꿀 수 있게 하면 고장이 나니까, 제한을 걸어주는 것으로 생각)

class Person:

    def __init__(self, name, pw):
        self.name = name
        self.pw = pw

person = Person('peter', 'abcd')

person.pw = 'qwer'

person.pw
 

게터, 세터를 이용해서 제한을 걸어보자.

내용을 입력하세요.
 

2. method 종류 (3가지) : 인스턴스 메서드, 클래스 메서드, 스태틱 메서드

구분
형태
특징
인스턴스 메서드
파라미터 self
객체를 이용하여 메서드 호출
클래스 메서드
파라미터 cls
클래스를 이용하여 메서드 호출
(객체로 생성된 초기 변수값을 모두 수정)
스태틱 메서드
파라미터 X
객체를 선언하지 않고 메서드 호출

 

내용을 입력하세요.
 
 

3. 클래스 설계 (is a, has a)

  • is a : A is a B (상속을 이용해서 클래스 설계)
  • has a : A has a B (객체를 객체에 넣어서 클래스 설계)

-두 가지 방법을 혼용해서 사용

# [1] is a
class Info:
    def __init__(self, name, email):
        self.name = name
        self.email = email

class Person(Info): #상속
    def __init__(self, name, email):
        self.name = name
        self.email = email

person = Person('peter', 'peter@gmail.com')
person.name, person.email
 
# [2] has a
class Name:
    def __init__(self, name):
        self.name_str = name

class Email:
    def __init__(self, email):
        self.email_str = email

class Person:
    def __init__(self, name_obj, email_obj):
        self.name = name_obj
        self.email = email_obj
    def show(self):
        print(self.name.name_str, self.email.email_str)

name_obj = Name('peter')
email_obj = Email('peter@gmail.com')

person = Person(name_obj, email_obj)
person.show()
 

4. 입력, 출력 (input, output)

  • RAM에 있는 내용을 SSD(HDD)에 저장 또는 SSD(HDD)에 있는 내용을 RAM에 저장
  • RAM에서 직렬화를 해서 SSD로 (거의 사용하지 않음)
  • pickle을 사용해서 입출력을 한다 (직렬화를 자동으로 해주며, 입출력 속도가 빠르다)

 

  • 어떻게 사용되는지

*입출력을 사용하지 않았을 때 문제점

-학습 데이터를 가지고 모델링을 함 (시간이 오래 걸림, 8h이라고 가정) -> 모델객체 생성 -> 예측할 수 있음

-모델객체는 메모리에 존재 (그냥 컴퓨터 끄면, 다시 사용할 수 없음, 다시 8h씩 학습시켜야 함)

*입출력을 사용했을 경우

-학습 데이터 -> 모델링(학습) -> 모델객체(RAM) ->모델저장(SSD) -> 예측

-모델로드(SSD -> RAM)해서 예측하면 됨 (약 5분정도 시간)