파이썬에서 클래스에 인스턴스 함수를 정의하여 사용하고 싶다면 함수의 첫 인자에 self 를 추가해주어야만 한다.
클래스의 메서드는 오버로딩이 불가능하다. (같은 이름의 다른 바디를 가진 메서드를 클래스 내에 동시에 정의할 시, 마지막에 정의한 메서드만 사용된다.)
앞 뒤로 언더바가 붙는 매직 메서드를 정의하면, 용도에 따라 편리하게 사용할 수 있다.
__init__ 라는 이름의 함수를 정의하고, 클래스 변수들을 초기화하는 바디를 작성하면 다른 언어의 생성자처럼 사용할 수 있다.
__del__ 라는 이름의 함수를 정의하면, 클래스의 인스턴스가 내장함수인 del 을 통해 사라지거나 프로그램이 종료되어 사라질 때, 행동을 정의할 수 있다.
__add__ 라는 이름의 함수를 정의하면, 인스턴스들을 + 로 연산했을 때, 행동을 정의할 수 있다.
파이썬에서 모듈이란 다른 파이썬 파일에서 사용할 수 있도록 만들어진 파이썬 파일을 의미한다.
사용법
(import 모듈이름) 을 하면, 해당 모듈의 함수나 변수등을 모듈이름.함수 와 같이 . 을 통해 사용할 수 있다.
다른 방법들과는 달리 모듈에 있는 변수나, 클래스등도 사용할 수 있다.
(from 모듈이름 import 모듈함수) 를 하면, 모듈이름.함수 와 같이 사용하지 않고 모듈함수만 호출할 수 있다.
(from 모듈이름 import 함수1, 함수2 ...) 를 하면, 여러 함수들을 가져올 수 있다.
(from 모듈이름 import *) 을 하면, 모든 함수들을 가져올 수 있다.
if __name__ == "__main__"
위 조건문은 파이썬 파일을 직접 실행시킬 때만 참이되며, 모듈로 불러오는 경우에는 거짓이 되어 실행되지 않는다.
모듈로 사용하기 위해 정의된 파일에 위 조건문을 사용하여 테스트 코드를 정의하는 등 실행과 모듈로 가져오는 것을 분리하기 위해 사용된다.
모듈 전역적으로 사용하기
모듈을 정의하면 같은 디렉토리 내에서만 import 하여 사용할 수 있었다.
어느 곳에서든 특정 모듈을 사용하고 싶다면, sys 모듈을 사용해야한다.
sys.path 는 파이썬 라이브러리들이 설치되어 있는 경로들을 담은 리스트를 저장하고 있는데, 여기에 모듈 파일이 있는 디렉토리의 경로를 추가해주면 전역적으로 해당 디렉토리 내 모듈을 import 하여 사용할 수 있다.
reload vs import
파이썬에는 import 로 불러온 모듈의 변경사항만 반영하기 위한 reload 라는 함수가 존재한다.
파이썬 프로그램에서 사용중인 모듈에 변경사항이 발생할 경우, 프로그램을 종료하고 다시 import 하면 수정사항이 반영되겠지만, 프로그램의 종료없이 reload 를 통해 모듈의 변경사항을 반영할 수 있으므로 개발 주기를 단축시킬 수 있으며 성능상 이점이 있다.
파이썬에서 예외 처리는 try except 문을 사용한다.
try 블록 내에 코드를 실행하다가 예외가 발생하면, except 블록에 정의한 코드가 실행된다.
except 블록 사용법
except
만 사용하면, 모든 예외를 잡아 처리한다.
except 예외이름
을 사용하면, 해당 예외가 발생할 경우 해당 블록이 실행된다.
except 예외이름, 예외메세지변수
를 사용하면, 해당 예외가 발생했을 때, 예외메세지를 담은 변수를 해당 블록에서 사용할 수 있게 된다.
예외 발생시키기
예외를 강제로 발생시키고 싶을 수도 있다. (ex. 상위 클래스에 선언한 메서드를 하위 클래스에서 구현해야만 하도록 강제하기 위해 상위 클래스 메서드를 실행시키면 예외를 발생하도록 처리)
raise 예외이름
을 사용하면 해당 예외를 발생시킬 수 있다.