Class
- class: 부류 예) 현대자동차는 자동차의 부류에 속해있다.
- instance : 실체 예) 현대 제네시스는 자동차의 실체이다.
- object : 객체 예) 제네시는 자동차 부류를 실체화(instantiate)한 객체이다.
- Class의 attribute : 클래스의 성질이나 속성 예) 자동차는 maker, model name, horse power 등의 성질을 가지고 있다.
+ __in-it함수를 통해 구현: class를 실체화할 때 사용하는 함수
+ : special methods, 특별취급 받는 함수들
+ self parameter 란? 실체를 가르킴. 클래스가 실체화된 객체를 넘겨주어야 하므로, 파이썬이 자동으로 넘겨줌
+ parameter들을 self에 저장하는 이유? 다른 메소드에서 사용하기 위해
class Car:
def __init__(self, maker, model, horse_power):
self.maker = maker
self.model = model
self.horse_power = horse_power
hyundai = Car("hyundai","genesis",500)
- Method : 객체가 행할수 있는 action. 예) 자동차는 달리고, 경적을 울릴수 있다.
+ method_name(self)
로 구현
class Car:
def __init__(self, maker, model, horse_power):
self.maker = maker
self.model = model
self.horse_power = horse_power
def honk(self):
return f"{self.maker} 빠라바라빠라밤"
hyundai = Car("hyundai","genesis",500)
hyundai.honk()
> "hyundai 빠라바라빠라밤"
Modules and Packages
- Module: 변수, 함수, 클래스 등을 모아놓은 파일
- 다른 파일에서 재사용이 가능
- 전체 코드가 커졌을 때 여러 파일로 나누어서 정리하기 위해
- 예) list의 len함수는 사실 파이썬에서 구현해놓은 모듈
- Module 만들기 : 새 파일 안에 재사용하고 싶은 함수등을 구현 (.py파일)
- Module 사용하기 :
import
키워드 사용
import my_module
my_module.func()
from my_module import my_module_func, my_module_var
print(my_module_var)
my_module_func()
print(my_module_var)
my_module_func()
from my_module import my_func as f1
from my_module2 import my_func as f2
f1()
f2()
- Package : module과 비슷하나, module보다 더 크고 복잡한 코드
- module의 크기가 너무 커서 한 파일에 관리하기 비효율적일 때, 코드를 나누어 관리함. 이런 여러 파일에 나누어져 있는 코드를 다시 하나의 module로 불러와서 사용할 수 있게 한것이 package.
- 디렉토리 = package
- Package의 사용 :
import <패키지이름.모듈이름>
import pkg.mod1
from pkg.mod2 import func2
pkg.mod1.func2()
func2()
- Package initialization :
__init__.py
파일 사용
- Import 할때 경로의 총 길이 줄여주기
- Package에서 import 할 수 있는 변수/함수/클래스 제한하기
- 그 외 package가 import될때 꼭 먼저 실행되어야 하는 코드들
from mod1 import func2
from pkg import func2
func2()
from mod1 import func2
from mod2 import func3
__all__ = ['func2', 'func3']
from pkg import *
func2()
func3()
func4()
- 다른사람의 package 사용 :
pip install <pkg이름>
Excepion Handling
- 예외 처리 : 의도하지 않은 에러가 일어아는 경우의 처리 함수
+ 예외 발생시, 다음 코드가 실행되지 않고 프로그램이 종료
- 예외 처리를 해주면, 프로그램이 종료되지 않고 다른 로직을 실행하게 하여 continue
예제:
def return_elem_or_minus_one(index):
short_list = [1, 2, 3]
elem = 0
try:
elem = short_list[index]
print("이 문장은 exception이 발생하지 않으면 실행됩니다")
except IndexError:
print(f"이 문장은 Exception이 발생하면 실행 됩니다")
elem = -1
except Exception as e:
print(f"IndexError가 아닌 다른 종류의 Exception이 발생했습니다 ==> {e}")
elem = -1
else:
print(f"Exception이 발생하지 않았습니다!")
finally:
print("이 문장은 exception 발생 여부와 상관없이 무조건 실행됩니다!")
return elem