Python 정리 05
10 May 2019
Reading time ~2 minutes
Python 정리 05 - 예외처리, 클래스
Dict
- dict를 format()의 매개변수로 주면 키값을 찾아 들어간다
name='노진경'
age=20
addr='서울시 강서구 까치산'
print('{addr}에 거주중인 {name}님/{age}세'.format(name='김희철',addr='서울시 동작구',age=20))
name='노진경'
age=20
addr='서울시 강서구 까치산'
# dict 앞에 값은 키이고 뒤는 값, 변수값이 할당되어 들어간다
print('{addr}에 거주중인 {name}님/{age}세'.format(name=name,addr=addr,age=age))
예외처리(Exception Handling)
- 문법적으로 문제가 없는 코드를 실행하는 중에 발생하는 오류를 처리하는 것
- 프로그램의 비 정상적인 종료를 막는 방법
try:
예외 발생예상 코드
except 예외처리객체 as alias:
예외 발생시 제공할 코드
except 예외처리 객체 as alias:
예외 발생시 제공할 코드
else:
아무런 에외가 발생하지 않았을 때 실행할 코드
finally:
반드시 실행되어야 할 코드
- 자바와는 다르게 Exception이 아닌 Error
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']
# 에러 발생
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[6]))
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']
# 예외 처리
try:
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[6]))
except IndexError as ie:
print('잘못된 인덱스 번호 : ',ie)
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']
num = 5
try:
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[num]))
num1 = num/0
print(num1)
except IndexError as ie:
print('잘못된 인덱스 번호 : ',ie)
...
try:
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[num]))
num1 = num/0
print(num1)
except IndexError as ie:
print('잘못된 인덱스 번호 : ',ie)
except ZeroDivisionError as zde:
print('0으로 나눌 수 없습니다 : ',zde)
...
# except ZeroDivisionError as zde:
# print('0으로 나눌 수 없습니다 : ',zde)
except: # except만 적으면 모든 예외를 처리가능
print('모든 예외를 처리할 수 있다')
...
try:
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[num]))
num1 = num/2
print(num1)
...
else:
print('정상적으로 종료되었을 때 실행될 코드')
...
num1 = num/0
...
else:
print('정상적으로 종료되었을 때 실행될 코드')
finally:
print('반드시 실행될 코드')
- 예외 강제 발생
- 특정 상황에서 예외를 강제로 발생시켜 처리하는 것
- 함수내 발생된 예외를 처리하지 않으면 호출한 곳으로 날려짐
raise 예외처리객체명("메시지")
- 사용자 정의 예외 만들기
class 예외처리 객체명(Exception):
def _init_(self):
super().__init__("사용자정의 예외가 발생하였음")
클래스
- OOP, 객체지향 프로그래밍
- 데이터를 포함한 데이터 구조(field, attribute)와 함수(function, procedure)로 구성
- 객체 내부에 포함된 데이터를 function을 통해 수정 가능
- 프로그램은 모두 객체로 분해되어 설계되고, 객체간 서로 상호작용을 통해 수행
- 파이썬은 함수를 기반으로 작업하지만 간혹 클래스를 사용하기도 함
- 파이썬의 object클래스의 기능과 속성은 모두 상속받는다
- 사용자가 작성한 클래스는 대문자로 클래스명을 부여한다
- 클래스 문법
- self를 안받으면 field를 사용할 수 없다
class 클래스명(부모클래스명):
변수명=값
def __init__(self):
생성자
# 변수사용 : self.변수명
def 함수명(self):
...
- 객체화 문법
변수명 = 생성자()
# -*- coding:UTF-8 -*-
class TestClass:
name='기미철'
age=26
def __init__(self):
print('생성자')
def getName(self):
return self.name
def printAge(self):
print('나이 : {age}세'.format(age=self.age))
return self.age
def setAge(self,age):
self.age = age
tc = TestClass() #클래스 객체 생성
tc.name = '김정윤'
name=tc.getName()
print('이름 : '+name)
tc.setAge(30)
tc.printAge()