오바라이딩
하위 클래스에서 상위 클래스의 메서드를 재정의(override)한다.
class Robot:
def __init__(self, c, h, w):
self.color = c
self.height = h
self.weight = w
def fire(self):
print('총알 발사!!')
class NewRobot(Robot):
def __init__(self, c, h, w):
super().__init__(c, h, w)
def fire(self):
super().fire()
print('레이저 발사!!')
fire()함수를 상속하면서 재정의하였다.
실습
삼각형의 넓이를 구하는 클래스를 상속받아, 넓이에 단위까지 붙혀지게끔 만들어 보세요.
class NewTriangleArea(TriangleArea):
def __init__(self, w, h):
super().__init__(w, h)
def getArea(self):
return str(super().getArea()) + 'cm2'
추상클래스
상위 클래스에서 하위 클래스에 매서드 구현을 강요한다.
from abc import ABCMeta
from abc import abstractmethod
class AirPlan(metaclass=ABCMeta):
@abstractmethod
def flight(self):
pass
class Airliner(Airplane):
def flight(self):
print('시속 400km/h 비행!!')
상속한 클래스에서 메서드를 완성한 뒤 사용하였다.
상속된 클래스 마다 입맛에 맛게끔 사용할 수 있다.
예외란?
예외란, 문법적인 문제는 없으나, 실행 중 발생하는 예상하지 못한 문제이다.
예외처리
예상하지 못한 예외가 프로그램 전체 실행에 영향이 없도록 처리함
예외 발생 예상 구문을 try~except로 감싼다.
실습
사용자로부터 숫자 5개를 입력받을 때 숫자가 아닌 자료형이 입력되면 예외 처리하는 프로그램을 만들어보자.
~else
예외가 발생하지 않은 경우 실행하는 구문이다.
생략할 수 있는 구문이다.
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외 발생')
continue
else:
if num % 2 == 0:
nums.append(num)
n += 1
else:
print('입력한 숫자는 홀수 입니다.', end='')
print('다시 입력 하세요.')
continue
finally
예외 발생과 상관없이 항상 실행한다.
try:
...
except:
...
else:
...
finally:
print(f'inputData: {inputData}')
Exception 클래스
Exception 클래스를 불러와 왜 예외처리가 되었는지 알려준다.
실습
사용자가 문자 메시지를 보낼 때 10글자 이하면 SMS로 발송하고, 10글자를 초과하면 MMS로 발송하는 프로그램을 예외 처리를 이용해서 만들어보자.
Exception에서, 인덱스를 놔둬 구분할 수 있다. 숫자부분이 e.args[1]이다.
사용자 예외 클래스
exception 클래스를 상속 받아서, 오류 메시지를 사용자에 맞게끔 수정할 수 있다.
텍스트 파일 쓰기
모드를 바꿀 수 있다. w, r ,a, x(파일이 기존에 있으면 에러가 난다.) 등
a 모드는 새로운 글을 더 넣을 수 있고, w는 덮어쓰기 기능이다.
file = open('C:/pythonTxt/test.txt', 'w')
strCnt = file.write('Hello world~')
print(f'strCnt: {strCnt}')
file.close()
file = open(uri + 'prime_numbers.txt', 'a')
file.write(str(n))
file.write('\n')
file.close()
텍스트 파일 읽기
uri = 'C:/pythonTxt/'
file = open(uri + 'hello_01.txt', 'r')
str = file.read()
print(f'str: {str}')
file.close()
파일에 있는 글 모두를 읽어올 수 있다.
with as
파일 열기, with as 문을 사용하면, 닫기를 생략할 수 있다.
writeliness()
리스트(List) 또는 튜플 데이터를 파일에 쓰기 위한 함수이다.
readlines()
파일의 모든 데이터를 읽어서 리스트 형태로 반환한다.
readline()
한 행 읽어서 문자열로 반환 한다.
실습
파일에 저장된 과목별 점수를 파이썬에 읽어, 딕셔너리에 저장하는 코드를 만들어보자.
scoreDic = {}
uri = 'C:/pythonTxt/'
with open(uri + 'scores.txt', 'r') as f:
line = f.readline()
while line != '':
#라인이 비어있을 때 까지
tempList = line.split(':')
#딕셔너리 형태로 만들어 준다.
scoreDic[tempList[0]] = int(tempList[1].strip('\n')
line = f.readline()
print(f'scoreDic: {scoreDic}')
{'kor':85, 'eng':90, 'mat':92, 'sci':79, 'his':82}
'제로베이스 데이터 분석 취업 스쿨 2기 > Python' 카테고리의 다른 글
[제로베이스 데이터 분석 취업 스쿨]Day8 python 중급 문제풀이 (1) | 2024.01.13 |
---|---|
[제로베이스 데이터 분석 취업 스쿨]Day6 python 중급 (0) | 2024.01.09 |
[제로베이스 데이터 분석 취업 스쿨]Day5 python 중급 (0) | 2024.01.08 |
[제로베이스 데이터 분석 취업 스쿨]Day4 python 기초 문제풀이 (0) | 2024.01.07 |
[제로베이스 데이터 분석 취업 스쿨]Day3 python 기초 (0) | 2024.01.05 |