클래스
클래스 기본 개념
- 함수 그룹: 여러 개의 함수가 '그룹'으로 내장되어 있다.
- 함수를 묶어서 사용 하기 위한 목적.
- 클래스 이름을 지을 때, 대문자로 시작하기
- 특수 메서드(함수):
- def __명칭__ #던더(더블언더)
- 초기화함수(생성자):
- 클래스 호출하자 마자 호출
- 속성 부여가 가장 큰 목적
- def __init__(self, ):
- 객체(인스턴스):
- 객체(인스턴스)를 생성했다.
- 속성을 갖고 있는 코드
- 클래스를 호출해서 객체(인스턴스)를 생성
- self:
- 만들어질 객체, 객체의 대명사.
클래스 변수와 메서드
변수의 종류 - 인스턴스, 클래스
- 인스턴스 변수
- self.변수
- 함수 안에서 선언
- 메서드 변수
- 클래스.변수 #생성할 때는 일반 변수 생성하듯이 생성
- 클래스에서 선언
메서드의 종류 - 인스턴스, 클래스, 스태틱
- 인스턴스 메서드
- 정의: def 함수명(self, ):
- 호출: self.함수명()
- 클래스 메서드
- 정의: @classmethod #데코레이터를 붙여야 한다.
def 함수명(cls, ): - 호출: 클래스명.함수명()
- 스태틱 메서드
- 클래스와 관련 없다. 그냥 묶어 놓는다.
- 정의: @staticmethod
dif 함수명(): - 호출: self.함수명()
클래스 상속
기존 클래스의 일부 요소를 그대로 가져다 쓰자.
class 클래스명( 부모클래스 ):
def __init__(self, a, b, c):
super().__init__(a, b)
self.c = c
def move(self, speed): # 그대로 상속 받는 것은 적을 필요 없음.
super().move(speed)
모듈과 패키지 (파일과 폴더)
모듈 불러오기
- 모듈 불러오기 (import는 파일명에 확장자 붙이지 않는다.)
- import 파일명
- import 파일명 as 별명
- 모듈의 함수만 불러오기
- from 파일명 import 함수명, 함수명
- from 파일명 import *
name 변수
- __name__: '__main__' 또는 모듈명이 들어간다.
- 직접 실행할 때:
- '__main__'
- !python 모듈명.py
- import할 때:
- 모듈명
- %%writefile example_module.pydef hello_world():return "안녕하세요"if __name__ == '__main__':# 모듈이 직접 실행될 때만 실행되는 코드print('파일을 직접 실행했군요.')print(f'name변수 : {__name__}')else:print('파일이 임포트되었습니다.')print(f'name변수 : {__name__}')
- # 직접 실행!python example_module.py
- # import 실행 import example_module
디렉토리 만들기
- 만들기: !mkdir 디렉토리명 #리눅스 운영체제에서 디렉토리 생성 명령어.
- 참조: import 디렉토리명
- import os
- os.mkdir(' ') #만들기
- os.path.isdir(' ') #디렉토리여부 확인 - 논리값
표준 라이브러리
오픈소스
- 프레임워크: 틀, 기반. 산업에 필요한 기능을 모두 제공. 해당 생태계 안에서 개발.
- 라이브러리: 도서관. 특정 영역에서만 사용. 부분적으로 가져와서 사용.
- import datetime
- import time
- time.time()
- import os
- 파일 폴더를 만들 때, 제거할 때, 파일 폴더의 경로를 가져올 때
- os.makedirs(new_directory)
- import numpy as np
- 통계
- randn = np.random.randn(10)
- import pandas as pd
- 데이터 테이블
- import cv2
- 이미지
- from sklearn.datasets import load_wine
- import tensorflow as tf
- 딥러닝
- import torch
- 딥러닝
예외처리
에러나서 코드가 멈추는 상황을 막겠다.
try만 중단하고 except 부터 끝까지 진행하자.
try, except
numbers = [1, 2, 3]
try:
number = numbers[5]
except: # try 구문에서 에러발생시, 에러발생 대신 except구문 실행
print("Index out of range.")
last = numbers[-1]
print(last)
특정 에러만 처리
try:
result = "hello" + 5
except TypeError:
print("Cannot add a string and an integer.")
- TypeError: can only concatenate str (not "int") to str
- ZeroDivisionError: division by zero
# 두가지 에러를 하나의 except구문으로 처리하기
try:
a = 10 / 5 # zerodivsion error
b = '5'
result = a + b # type error
except (ZeroDivisionError, TypeError) as e:
print(f'[!] error : {e}')
print('이후 코드 정상 작동')
try, except, else - 에러가 발생하지 않을 때만, 실행 구문 else:
try, except, finally - 항상 동작해야 하는 경우, 실행 구문 finally:
finally를 쓰지 않는 경우랑 뭐가 다를까?
- 함수 안에서 사용할 때, return을 만나도 종료하지 않고 finally: 구문을 처리한다.
- return이 except랑 finally 모두에 있을 경우, finally return을 출력
고의로 에러 처리하기
x = 5
if x % 3 != 0:
raise Exception('3의 배수가 아닙니다.')
Tags:
AI개발_교육