클래스
클래스(class)란 똑같은 무언가를 계속 만들어 낼 수 있는 설계 도면, 객체(object)란 클래스로 만든 피조물을 뜻합니다. 클래스로 만든 객체에는 바로 객체마다 고유한 성격을 가진다는 중요한 특징이 있습니다.
클래스는 다음과 같인 선언하고 생성합니다.
# 선언
class Cookie:
pass
# 생성
a = Cookie()
pass는 아무것도 수행하지 않는 문법으로, 임시로 코드를 작성할 때 주로 사용합니다.
메서드와 인스턴스 변수
클래스에서 메서드는 다음과 같이 정의하고 사용합니다.
class FourCal:
def setdata(self, firsh, second):
self.first = first
self.second = second
a = FourCal()
a.setdata(4, 2)
파이썬에서는 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용합니다. 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용한 것입니다.
인스턴스 변수는 메서드 안에서 다음과 같이 선언할 수 있습니다.
# 클래스 내부
self.변수명 = 값
# 클래스 외부
a = FourCal()
a.변수명 = 값
파이썬은 자바와 달리 인스턴스 변수를 클래스 정의 시 미리 선언할 필요가 없습니다.
생성자
생성자(constructor)란 객체가 생성될 때 자동으로 호출되는 메서드를 의미하며 다음과 같이 선언할 수 있습니다.
class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
__init__ 이라는 이름을 갖는 메서드를 생성하면 생성자로 인식됩니다.
상속
상속(Inheritance)이란 '물려받다'라는 뜻으로 다른 클래스의 기능을 물려받을 수 있게 만드는 것입니다.
다음과 같이 클래스 이름 뒤 괄호 안에 상속할 클래스 이름을 넣어주면 됩니다.
class MoreFourCal(FourCal):
pass
메서드 오버라이딩
부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는 것을 메서드 오버라이딩이라 하며 다음과 같이 사용합니다.
class MoreFourCal(FourCal):
def div(self):
문장
클래스 변수
클래스 변수는 다음과 같이 선언할 수 있습니다.
클래스명.변수명 = 값
# example
FourCal.first = 1
클래스 변수를 변경하면 클래스로 만든 모든 객체의 값도 모두 변경됩니다.
모듈
모듈이란 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일입니다. 또한 다른 파이썬 프로그램에서 불러와 사용할 수 있도록 만든 파이썬 파이라고도 할 수 있습니다.
import 모듈명
from 모듈명 import 모듈 함수
이때, 모듈 함수는 여러 개 나열이 가능하며 * 를 사용하여 모두 불러올 수 도 있습니다. (함수 외에도 클래스나 변수도 불러올 수 있습니다.)
__name__ 변수
__name__ 변수는 파이썬이 내부적으로 사용하는 특별한 변수 이름입니다. 해당 모듈을 import 하면 __name__ 변수에 모듈명(파일명)이 저장되고, 직접 실행할 경우에는 "__main__" 이 저장됩니다.
파이썬은 import 시에도 모든 코드가 실행되는데 이를 방지하고자, 다음과 같이 __name__ 변수 값을 기준으로 직접 실행될 때만 코드가 실행되도록 할 수 있습니다.
if __name__ == "__main__":
print(add(1, 2))
print(add(2, 3))
패키지
파이썬에서 패키지(package)란 관련 있는 모듈의 집합을 의미합니다. 패키지는 파이썬 모듈을 계층적으로 관리할 수 있게 해줍니다.
__init__.py
각 폴더 하위에 __init__.py 파일이 존재하면 해당 폴더를 파이썬 패키지로 인식합니다. Python 3.3 부터는 해당 파일이 없어도 패키지로 인식되지만 하위 버전 호환을 위해 생성해주는 것이 안전합니다.
또한, __init__.py 파일은 패키지와 관련된 설정이나 초기화 코드를 포함할 수 있습니다.
1. 패키지 변수 및 함수 정의
패키지 수준에서 변수와 함수를 정의할 수 있습니다.
2. 패키지 내 모듈을 미리 import
패키지 내의 다른 모듈을 미리 import하여 패키지를 사용하는 코드에서 간편하게 접근할 수 있습니다.
다만, 모든 것(*)을 import 할 때는 __all__ 변수를 설정하여 import 할 수 있는 모듈을 정의해줘야 합니다.
__all__ = ['모듈명']
3. 패키지 초기화
패키지를 처음 불러올 때 실행되어야 하는 코드를 작성할 수 있습니다. 예를 들어 데이터베이스 연결이나 설정 파일 로드와 같은 작업을 수행할 수 있습니다.
relative 패키지
다음과 같이 현재 모듈의 위치를 기준으로 다른 모듈이나 패키지를 import할 수 있습니다.
from . import module_a # 같은 디렉토리
from .module_a import func_a # 같은 디렉토리의 함수
from .. import some_module # 한 단계 위
예외 처리
다음은 오류를 처리하기 위한 try 문의 기본 구조입니다.
try:
# 예외가 발생할 수 있는 코드
...
except [오류 [as 변수]]:
# 예외 발생 시 처리
...
else:
# 예외가 발생하지 않으면 이 부분 실행
...
finally:
# 예외 발생 여부와 관계없이 항상 실행
...
오류 회피
아래와 같이 특정 오류가 발생할 경우 그냥 통과시킬 수 있습니다.
try:
f = open("none", 'r')
except FileNotFoundError: # 파일이 없더라도 오류가 발생하지 않고 통과
pass
오류 발생
파이썬은 raise 명령어를 사용해 오류를 강제로 발생키길 수 있습니다.
calss Bird:
def fly(self):
raise NotImplementedError
예외 만들기
파이썬 내장 클래스인 Exception 클래스를 상속하여 커스텀 예외를 만들 수도 있습니다.
class MyError(Exception):
def __str__(self):
return "에러입니다."
위와 같이 __str__ 메서드를 구현하면 오류 메세지를 print() 함수로 출력할 수 있습니다.
'Lang > Python' 카테고리의 다른 글
| Python (4) - 내장 함수, 표준 라이브러리, 외부 라이브러리 (2) | 2025.05.18 |
|---|---|
| Python (2) - 제어문, 함수, 입출력 (0) | 2025.05.02 |
| Python (1) - 자료형 (2) | 2025.04.30 |