일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 메소드
- String
- Method
- 프로그래밍
- 파이썬
- 자바스크립트
- HTML
- 데이터베이스
- 프론트엔드
- 서블릿
- jsp
- Programming
- 함수
- 자바
- java
- It
- 코딩
- web
- frontend
- Database
- 웹
- Servlet
- 오라클
- oracle
- JavaScript
- Python
- function
- SQL
- 문자열
- PL/SQL
- Today
- Total
Untitled_Blue
[Python] 파이썬에서의 객체지향 - 클래스, 모듈, 내장함수, 패키지, 예외 처리 본문
[Python] 파이썬에서의 객체지향 - 클래스, 모듈, 내장함수, 패키지, 예외 처리
Untitled_Blue 2024. 2. 9. 21:20안녕하세요. 이번 글은 파이썬에서의 객체지향 개념에 대한 설명입니다.
- 클래스 (Class)
- 프로그램 내 전반적인 구조 내지 설계도이며 객체를 생성하기 위한 핵심 도구
- 구성 요소로는 함수와 변수가 있다.
class mLogin:
def loginAlert(self):
print('Login')
class mLogOut:
def logoutAlert(self):
print('Logout')
class mJoin:
def joinAlert(self):
print('Join Member')
a = mJoin()
a.joinAlert() # Join Member
b = mLogin()
b.loginAlert() # Login
다음과 같이 파이썬 내 클래스는 주로 def라는 키워드를 사용하는 메서드와 필드로 구성되어 있다. 이때 메서드를 생성할 때 self라는 키워드를 사용하는데 이는 말그대로 자기 자신을 의미하는데 인스턴스를 만들 때 값을 받아와서 내부에서 처리하도록 도와주는 역할을 담당하고 있다.
class mJoin:
def __init__(self, name, id, dept): # 처음에 호출되는 함수
self.name = name
self.id = id
self.dept = dept
def joinAlert(self):
print('{0} 님의 아이디는 {1}이며 전공은 {2}입니다.'.format(self.name, self.id, self.dept))
a = mJoin('홍길동', 'gildong.hong', '컴퓨터공학과')
a.joinAlert() # 홍길동 님의 아이디는 gildong.hong이며 전공은 컴퓨터공학과입니다.
다음과 self를 기반으로 매개변수를 활용하는 코드를 확인할 수 있는데 이때 __init__ 라는 메서드를 볼 수 있다. 이 메서드는 처음에 호출되는 메서드이며 클래스 내에서 반드시 거쳐가는 부분이다.
class Calc:
def __init__(self, result, a, b):
self.result = result
self.a = a
self.b = b
def mAdd(self):
self.result = self.a + self.b
return self.result
def mMul(self):
self.result = self.a - self.b
return self.result
a = Calc(0, 2, 1)
print(a.mAdd()) # 3
print(a.mMul()) # 1
다음과 같이 __init를 기반으로 간단한 연산 프로그램을 제작할 수도 있다.
- 모듈 (Module)
- 함수를 시작으로 변수 또는 클래스들로 구성되어 있는 파일
- import 키워드를 사용해서 다른 파이썬 파일을 모듈로 사용 가능
class Calc:
def __init__(self, result, a, b):
self.result = result
self.a = a
self.b = b
def mAdd(self):
self.result = self.a + self.b
return self.result
def mMul(self):
self.result = self.a - self.b
return self.result
해당 파일은 모듈로 사용될 pyPractice_20231227이다.
import pyPractice_20231217
a = pyPractice_20231217.Calc(0, 1, 2)
print(a.mAdd()) # 3
print(a.mMul()) # -1
해당 코드는 import 키워드를 사용해서 다른 파이썬 파일을 모듈로 사용해서 클래스를 인스턴스화해서 사용한 것이다.
from pyPractice_20231217 import Calc
a = Calc(0, 1, 2)
다음과 같이 모듈 중에서 특정 클래스 또는 함수만 사용하고 싶을 때는 from 모듈명 import 모듈 함수 또는 클래스명을 통해 활용할 수 있다. 이렇게 모듈을 활용하면 별도로 각각 클래스를 입력할 필요없이 import 문 하나로 효율성 있으면서 간결하고 핵심적인 코드를 작성할 수 있다.
if __name__ == "__main__":
print("Hello")
여담으로 __name__이라는 특별한 변수에 대해서 설명하려고 하는데 이는 직접 하나의 파일을 실행할 경우 사용되는 함수이다. 이를 더 설명하면 sample001.py를 직접적으로 실행하면 메인 파일을 실행하는 것이기 때문에 __name__가 있는 파일은 직접적인지를 파악할 수 있다는 뜻이다. 반대로 해당 파일을 import 문을 사용해서 다른 파일로부터 간접적으로 실행되었을 경우에는 메인 파일을 직접적으로 실행하지 않았기 때문에 상단의 코드의 조건식에 대한 결과는 false가 된다.
- 내장 함수
- 일종의 작은 API로 기존에 이미 만들어져 있는 형태로 제공하는 함수
- https://docs.python.org/ko/3/index.html
3.12.1 Documentation
Python 3.12.1 문서 Welcome! This is the official documentation for Python 3.12.1. 설명서의 파트들: 파이썬 3.12 의 새로운 기능은? 2.0 이후의 모든 "새로운 기능" 문서 자습서 여기에서 시작하세요 라이브러리 레퍼
docs.python.org
상단의 링크는 파이썬에서 제공하는 공식 API 문서가 있는 사이트이다. 하단에 설명할 내장 함수 외 다양한 함수와 문법을 확인할 수 있다.
함수 | 설명 |
abs() | 특정 숫자를 절댓값으로 표현하는 함수 |
chr() | 유니코드 값을 해당 문자로 반환하는 함수 |
ord() | 문자를 유니코드 값으로 변환하는 함수 |
divmod(a, b) | 두 값의 몫과 나머지를 반환하는 함수 |
enumerate([ ]) | 열거형으로서 객체를 반환하는 함수 |
eval() | 문자열 표현식을 실행한 결과를 반환하는 함수 |
hex() | 정수를 16진수로 변환하는 함수 |
oct() | 정수를 8진수로 변환하는 함수 |
id() | 객체를 고유번호로 반환하는 함수 |
input([prompt]) | 사용자 입력을 받는 함수 |
int() | 문자열을 정수 또는 실수로 변환하는 함수 |
len() | 문자열 내 문자의 갯수를 반환하는 함수 |
list() | 데이터를 리스트로 변환하는 함수 |
min(), max() | 반복 가능한 데이터를 입력받아 최소값, 최대값 반환하는 함수 |
pow(a, b) | a의 b 제곱값의 결과를 반환하는 함수 |
round() | 숫자값을 반올림해주는 함수 |
isinstance | 특정 객체가 그 클래스의 인스턴스인지를 파악하는 함수 |
open | 특정 파일을 여는 방법을 지정하는 함수 w(쓰기), r(읽기), a(추가), b(바이너리 모드 읽기) |
range(시작값, 끝값, 숫자사이의 거리) | 범위 내 값을 반복해서 반복 가능한 객체로 생성하는 함수 |
sorted([list]) | 리스트를 오름차순으로 정렬해주는 함수 |
str() | 객체를 문자열 형식으로 변환하는 함수 |
sum() | 입력 데이터의 합을 반환하는 함수 |
tuple('문자열') | 문자열을 반복가능한 데이터로 반환하는 함수 |
type() | 입력값의 자료형을 나타내는 함수 |
zip([list], [list]) | 두 개 이상의 리스트를 서로 묶어서 표현하는 함수 |
map() | 각 요소들에게 특정 함수를 적용할 때 사용하는 함수 |
- 패키지 (Package)
- 모듈의 집합체
- 도트(.)를 사용해서 모듈을 계층적으로 관리함으로써 공동 작업 및 유지보수에 용이
- 여러 모듈이라는 파이썬 파일들을 모아두는 일종의 폴더
다음과 같이 디렉터리를 통해 계층적으로 그룹별로 모듈이라는 파이썬 파일을 효율적으로 관리할 수 있다. 실무에서는 주로 기능별로 패키지를 분류하는 경우가 많다.
- 예외 처리 (Exception)
- 프로그램 개발 중 또는 사용자가 프로그램을 사용하면서 규격 외의 값을 입력했거나 미숙한 조작으로 인해 발생하는 오류이며 개발자가 해결할 수 있는 범위 내 있는 점이 특징
try:
print(4/'0')
except TypeError as k:
print(k)
finally:
print('The End')
예외 처리문은 흔히 try-except문이 기본인데 각각 분석해보자면 try는 먼저 실행하고자 하는 코드이며 최소 한 번은 실행된다. 이후 예외가 발생하면 except으로 가서 try 내 코드에 예외가 발생하였음을 알리는 방식으로 실행된다. 이때 TypeError as k라고 적었는데 이는 int와 str을 사칙연산하려고 할 때 타입 사용이 올바르지 않다는 점에서 발생하는 오류를 알리고자 작성한 것이다. 상단 결과를 보면 예외가 발생하였음을 직관적으로 알려주는 점을 알 수 있다.
더 나아가 finally문을 사용하였는데 이는 선택사항이며 finally 내부에 있는 코드는 예외가 발생해도 발생하지 않아도 최종적으로 반드시 실행되는 구간이다.
try:
print(1 + 1)
#print(4/'0')
except TypeError as k:
print(k)
except Exception as e:
print(e)
else:
print('Not Find Error')
다음과 같이 except문을 여러 개 설정할 수 있을 뿐만 아니라 모든 에러에 염두하고자 할 때는 Exception을 사용해서 특정 예외만을 처리하지 않고 모든 예외처리를 잡아줄 수 있다. 또한 finally와 다르게 else문은 오류 내지 예외가 발생하지 않을 때만 최종적으로 실행해주는 역할을 하고 있다는 점을 확인할 수 있다.
예외는 정말 다양하기 때문에 나머지 예외에 대해 보길 원한다면 하단 공식 API 사이트에 방문해보는 것을 추천한다.
Built-in Exceptions
In Python, all exceptions must be instances of a class that derives from BaseException. In a try statement with an except clause that mentions a particular class, that clause also handles any excep...
docs.python.org
'Programming Language > Python' 카테고리의 다른 글
[Python] 외부 라이브러리 (0) | 2024.03.04 |
---|---|
[Python] 라이브러리 (0) | 2024.03.02 |
[Python] 프로그래밍의 입출력, 함수 (0) | 2023.12.25 |
[Python] 상황에 따라 제어하다. 제어문 (1) | 2023.12.23 |
[Python] 파이썬의 시작, 자료형과 print() (1) | 2023.12.17 |