• Home
  • About
    • Young's Github Pages photo

      一日不作一日不食

    • About
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

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))

01

name='노진경'
age=20
addr='서울시 강서구 까치산'

# dict 앞에 값은 키이고 뒤는 값, 변수값이 할당되어 들어간다
print('{addr}에 거주중인  {name}님/{age}세'.format(name=name,addr=addr,age=age))

02

예외처리(Exception Handling)

  • 문법적으로 문제가 없는 코드를 실행하는 중에 발생하는 오류를 처리하는 것
  • 프로그램의 비 정상적인 종료를 막는 방법
try:
    예외 발생예상 코드
except 예외처리객체 as alias:
    예외 발생시 제공할 코드
except 예외처리 객체 as alias:
    예외 발생시 제공할 코드
else:
    아무런 에외가 발생하지 않았을 때 실행할 코드
finally:
    반드시 실행되어야 할 코드
  • 자바와는 다르게 Exception이 아닌 Error
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']

# 에러 발생
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[6]))

03

group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']

# 예외 처리
try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[6]))
except IndexError as ie:
    print('잘못된 인덱스 번호 : ',ie)

04

group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']
num = 5

try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[num]))
    num1 = num/0
    print(num1)
except IndexError as ie:
    print('잘못된 인덱스 번호 : ',ie)

05

...
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)

06

...
# except ZeroDivisionError as zde:
#    print('0으로 나눌 수 없습니다 : ',zde)
except: # except만 적으면 모든 예외를 처리가능
    print('모든 예외를 처리할 수 있다')

07

...
try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[num]))
    num1 = num/2
    print(num1)
...
else:
    print('정상적으로 종료되었을 때 실행될 코드')

08

...
    num1 = num/0
...
else:
    print('정상적으로 종료되었을 때 실행될 코드')
finally:
    print('반드시 실행될 코드')

09

  • 예외 강제 발생
    • 특정 상황에서 예외를 강제로 발생시켜 처리하는 것
    • 함수내 발생된 예외를 처리하지 않으면 호출한 곳으로 날려짐
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()

10



Python