멋사 AI SCOOL 9일차
: Python 모듈, 패키지, 예외처리
* Keywords
#class
#module
#package
#import
#from #as
* Today I Learned
지난 시간 복습
- 변수와 함수를 묶어서 코드를 작성하는 방법
- 객체지향을 구현하는 문법
- 객체지향 : 실제세계를 모델링하여 프로그램을 개발하는 개발방법론 -> 협업 용이
- 클래스 사용법
- 클래스 선언(코드 작성) -> 객체 생성(메모리 사용) -> 메서드 실행(코드 실행)
- 클래스 선언(설계도 작성) -> 객체 생성(제품 생산) -> 메서드 실행(기능 사용)
- 클래스 식별자 : PasacalCase
- class, self(객체 자신)
- 클래스는 사용자 정의 데이터 타입이다
- type(account) : Account -> 클래스는 데이터 타입이다
- Account 클래스는 직접 만듦 -> 클래스는 사용자 정의 데이터 타입이다
- 객체는 어떤 데이터타입(클래스)으로 만들어졌는지에 따라서 사용 가능한 변수, 함수가 다르다.
- 스페셜 메서드
- 특별한 기능을 하는 메서드
- __intint__() : 생성자 메서드
-객체가 생성될 때 실행되는 메서드
- 메서드에서 사용되는 변수를 초기화 할 때 사용 -> 불량품 객체가 생성되는 것을 줄일 수 있음
-__add__() : +연산자 정의하는 메서드
- int데이터 타입의 + 연산과 str 데이터 타입의 + 연산이 다르게 수행
- python의 list와 numpy의 ndarray 데이터 타입이 수행되는 연산이 다르다 -> ndarray 연산이 속도가 빠르다
- __str__(), __repr__() : print()함수, ipython에서 출력하는 기능을 수행
- 상속
- 다른 클래스의 변수, 함수를 가져오는 방법
- 다중 상속 가능
7) 클래스
스타크래프트 클래스 연습
class Marine :
def __init__(self, health = 40, attack_pow = 5) :
self.health = self.max_health = health
self.attack_pow = attack_pow
def attack(self, target) :
target.health -= self.attack_pow
if target.health < 0 :
target.health = 0
class Medic :
def __init__(self, health = 60, heal_pow = 6) :
self.health = health
self.heal_pow = heal_pow
def heal(self, target) :
target.health += self.heal_pow
if target.health > target.max_health:
target.health = target.max_health
m1 = Marine()
m2 = Marine()
medic = Medic()
m1. health, m2.health
m1.attack(m2)
m1.health, m2.health
m1.attack(m2)
m1.health, m2.health
getter, setter
- 객체의 내부 변수에 접근할 때 특정 메서드(getter, setter)를 거쳐서 접근할 수 있도록 하는 방법
mangling
- 변수에 직접적으로 접근하는 것을 막는 방법
- 사용법 : 변수명 앞에 __를 붙임 (임의로 못 바꾸게)
class Person:
def __init__(self, pw):
self.__hidden_pw = pw
def getter(self):
print('getter')
return self.__hidden_pw
def setter(self, new_pw):
print('setter')
input_pw = input('insert password : ')
if input_pw == self.__hidden_pw:
self.__hidden_pw = new_pw
else:
print('wrong password!')
pw = property(getter, setter)
person = Person('abcd')
person__hidden_pw = 'qqqq' #x
person.pw = 'wwww' #setter통해서만 접근 가능
메서드 종류
- 인스턴트 메서드 : 파라미터 self : 객체를 이용하여 메서드 호출
- 클래스 메서드 : 파라미터 cls : 클래스를 이용하여 메서드 호출 : 객체로 생성된 초기 변수값을 모두 수정
- 스태틱 메서드 : 파라미터 x : 객체럴 선언하지 않고 메서드 호출
- 클래스 메서드, 스테틱 메서드 차이 : 클래스 메서드는 클래스 변수에 접근 가능
- 인스턴스 메서드로 바꾸면 클래스 메서드 사용해도 아무런 변화 x
is a와 has a 개념
- is a : A is a B : 상속을 이용해서 클래스 설계
- has a : A has a B : 객체를 객체에 넣어서 클래스 설계
- 두가지 방법을 혼용해서 사용
is a
# is a
class Info:
def __init__(self, name, email):
self.name = name
self.email = email
class Person(Info):
def show(self):
print(self.name, self.email)
person = Person('peter', 'peter@gmail.com')
person.name, person.email
has a
# 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')
8) 입출력
- RAM -> SSD(HDD), RAM <- SSD(HDD)
- RAM -> 직렬화(byte()) -> SSD(HDD)
- pickle : 직렬화, 입출력 속도가 빠름
- 입출력 사용 X
- 학습 데이터 -> 모델링(학습 : 8h) -> 모델객체(RAM) -> 예측
- 학습 데이터 -> 모델링(학습 : 8h) -> 모델객체(RAM) -> 예측
- 학습 데이터 -> 모델링(학습 : 8h) -> 모델객체(RAM) -> 예측
- 입출력 사용 O
- 학습 데이터 -> 모델링(학습 : 8h) -> 모델객체(RAM) -> 모델 저장(SSD) -> 예측
- 모델로드(SSD -> RAM : 5min) -> 예측
9) 모듈, 패키지
- 모듈 : 변수, 함수, 클래스를 하나의 파일(.py)로 모아서 코드 작성
- 패키지 : 여러개의 모듈 파일을 디렉토리로 구분하여 코드를 작성하는 방법 -> 버전정보
10) 예외처리
- 코드의 에러를 처리하는 방법, 문법
- try, except, finally, raise
* Homework
* Reference
* Retrospective
😍 Liked
파이썬 5일 안에 훑다...
📚 Learned
파이썬 클래스
입출력
모듈 패키지 - import from as
예외처리
데이터 사이언티스에게 필요한 역량
💦 Lacked
파이썬을 다 알기에는 턱없이 부족한 시간인 5일
앞에 내용이 헷가리다 보니 뒷 부분을 따라가기에 어려움이 있음
🙏 Longed for
- 파이썬 함수, 클래스 공부
'AI SCHOOL > TIL' 카테고리의 다른 글
[WIL] 7주차 (0) | 2023.02.09 |
---|---|
[TIL] 멋사 AI SCOOL DAY 9 - 데이터사이언스 개요, 판다스(pandas) (0) | 2023.01.09 |
[TIL] 멋사 AI SCOOL DAY 8 - 파이썬 함수, 상관계수 (0) | 2023.01.05 |
[TIL] 멋사 AI SCOOL DAY 7 - 파이썬 함수 (0) | 2023.01.04 |
[TIL] 멋사 AI SCOOL DAY 6 - 연산자, 조건문, 반복문 (1) | 2023.01.03 |