Python 클래스/ 모듈/ 패키지/ 예외처리
클래스
- 파이썬도 클래스가 존재하며 콜론을 이용하여 생성한다.
class Calculator:
def __init__(self):
self.result = 0
def adder(self, num):
self.result += num
return self.result - self변수
- 메소드의 첫번째 파라미터명으로 관례적으로 사용되는 변수로 호출한 객체 자신을 전달한다. 항상 명시적으로 구현해야 한다.
- 파이썬은 객체를 통해 클래스의 함수를 호출할 때 호출한 객체 자신이 호출한 클래스 함수의 첫번째 입력 인수로 전달된다.
- 즉, 메소드의 변수중 self에는 객체 자신이 전달이 된다. 단, 다른 객체를 전달하기 위해서는 그 객체도 전달해야한다.
- __init__ 메소드
- 객체를 만들 때 자동으로 실행되는 것으로 자바에서의 생성자와 비슷하다.
- 이 메소드에는 변수를 생성하는게 가능하다.
- 상속
- class 상속받을 클래스명(상속할 클래스명)
- 오버라이딩도 가능하다.
- 연산자 오버라이딩
- __add__(self, other) -- " + " 연산자
- __sub__(self, other) -- " - " 연산자
- __mul__(self, other) -- " * " 연산자
- __truediv__(self, other) -- "/" 연산자
모듈
- import 모듈이름으로 사용가능하며 현재 디렉터리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다.
- 자바에서 사용하는 import와 비슷하다고 생각하면 된다.
- 사용시 모듈이름.모듈함수(ex mod1.sum())로 사용하는데 이를 간단히 하려면
from 모듈이름 import 모듈함수로 하면 간단하게 모듈함수만 사용하면 된다. - 다른 함수도 추가하려면 콤마(,)나 *를 이용한다. from 모듈함수 import *
- if __name == "__main__":
- import하려는 파일안에 print같은 함수를 입력해 출력해 놓으면 import를 실행하는 순간 그 함수들로 인해 출력이 된다.
- 이를 방지하기 위해 이러한 함수들을 if __name__ == "__main__" : 에다가 입력시켜 놓으면 import할 때 출력되지 않는다.
- 이는 __name__ 변수는 파이썬 내부의 변수명으로 파일을 직접 실행시킬 때 __name__ 변수에 __main__이 저장된다. 이를 이용하는 것이다.
- 모듈을 통해서 함수뿐만 아니라, 변수, 클래스도 사용 가능하다.
- 모듈은 대화형 인터프리터 뿐아니라 단순 파일에도 사용할 수 있다.
- 디렉터리로 이동하지 않고 불러오는 방법
- sys.path.append(모듈 저장한 디렉터리) 사용하기
- import sys 로 불러온뒤, sys.path.append("디렉터리 위치")를 이용한다.
- 환경변수에 위치 추가하기
패키지
- 디렉터리와 파이썬 모듈로 이루어지는 구조인데 도트를 이용해 관리하는 것으로 자바의 package와 유사하다.
- 사용법은 import 디렉터리.디렉터리.파일명 과 같은 방식으로 사용 가능하다.
- 단, 최상위 디렉터리를 import해서 사용할 때는 그 안의 모듈과 __init__,py에 정의 된 값만 사용 가능하다.
- 또한, 가장 마지막 항목은 반드시 모듈 또는 패키지 여야만 한다.
- __init_.py의 용도
- 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다.(python 3.3부터는 없어도 패키지로 인식이 된다.)
- all의 용도
- 원래의 from ~ import *를 그대로 사용하면 오류가 발생하기도 한다.
- 이를 사용하려면 해당 디렉터리의 __init_.py 파일에 __all__ == ['모듈'] 을 설정해 주어야 한다.
- from의 마지막 항목인 모듈인 경우에는 그냥 import *를 사용해도 import가 된다.
- relative 패키지
- 기본적으로 모듈안에 import를 할 때 전체 디렉터리를 쓰는 대신
.. – 부모 디렉터리
. – 현재 디렉터리
를 이용한다.
예외처리
- try, except를 이용해서 오류를 처리할 수 있게 해준다.
- 오류 발생의 예
- 디렉터리 안에 없는 파일 열려고 시도할 때 - FileNotFoundError
- 0으로 다른 숫자를 나눌 때 - ZeroDivisionError
- 리스트 인덱스 값보다 큰 인덱스를 지정 할 때 - IndexError
- try, except문 기본구조
try:
...
except [발생오류[as 오류 메세지 변수]]:
... - except구문은 3가지 방법으로 표현 가능
- try, except 만 쓰는 방법
- 발생 오류만 포함하는 except 문
- 발생 오류와 오류 메세지 변수 포함한 except 문
- try.. else
- 예외가 발생하지 않은 경우 실행되며 반드시 except 뒤에 위치
- try... finally
- 예외 발생 여부 상관 없이 무조건 실행되는 부분
- except를 여러개 사용하여 여러개의 오류를 처리할 수 있다. 혹은 ()를 통해서 함께 처리할 수도 있다.
- excpet 문에 pass를 사용하면 그대로 이어서 한다.
- 오류를 강제로 발생시키려면 raise 명령어를 이용한다.
- 오류 만들기
- Exception클래스를 상속하여 만들 수있다.
- 오류메세지를 이용 하고 싶다면 __str__ 메소드를 구현해야한다.
댓글
댓글 쓰기