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__ 메소드를 구현해야한다.

댓글

이 블로그의 인기 게시물

KV Language(Pycharm에 Highlighting 기능 설정하기)

Python 코딩 공부 시작과 Github 활용

Kivy Tutorial - PingPong