파이썬(28~32)

오버라이딩(매서드를 재정의 한다.)

ex)

class TriangleArea:
def init(self, w, h):
self.width = w
self.height = h

def printTriangleArea(self):
    print(f'self.width : {self.width}')
    print(f'self.height : {self.height}')

def getArea(self):
    return self.width * self.height / 2

class NewTriangleArea(TriangleArea):

def __init__(self, w, h):
    super().__init__(w, h)

def getArea(self):
    return str(super().getArea()) + '㎠'

ta = NewTriangleArea(7,5)
ta.printTriangleArea()
triangleArea = ta.getArea()
print(f'triangleArea : {triangleArea}')

출력값 :
self.width : 7
self.height : 5
triangleArea : 17.5㎠

추상클래스

상위 클래스에서 하위 클래스에 매서드 구현을 강요한다.

ex)

from abc import ABCMeta - 매서드 구현 강요할때 써야함
from abc import abstractmethod - 매서드 구현 강요할때 써야함
class AirPlane(metaclass=ABCMeta): - 매서드 구현 강요할때 써야함

@abstractmethod                      -매서드 구현 강요할때 써야함
def flight(self):
    pass

def forward(self):
    print('전진')

def backward(self):
    print('후진')

class AirLiner(AirPlane):

def __init__(self, c):
    self.color = c

def flight(self):
    print('시속 400km/h 비행!!')

ai = AirLiner('red')
ai.flight()
ai.forward()
ai.backward()

28. 예외란(예상하지 못한 문제로 프로그램 실행이 어려운 상태)

예외란 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제이다.

예외종류

예외 관련 클래스는 Exception 클래스를 상속한다.

29. 예외처리(발생된 예뢰를 별도 처리함으로써 프로그램 전체의 실행에 문제가 없도록함.)

예외 발생 구문을 try ~ except로 감싼다.

ex)

n1 = 10; n2 = 0

try:
print(n1 / n2) #예외처리가 필요한 부분
except:
print('예상치 못한 예외가 발생했습니다.')
print('다른 프로그램 실행은 문제가 없습니다..')

print(n1 * n2)
print(n1 - n2)
print(n1 + n2)

출력값 :

예상치 못한 예외가 발생했습니다.
다른 프로그램 실행은 문제가 없습니다..
0
10
10

30. try ~ except ~ else(예외가 발생하지 않은 경우에 실행하는 구문)

try except 구문을 사용했을 때 else를 사용해야함.(예외처리 시에만)

31.finally

예외 발생과 상관없이 항상 실행한다.

32.exception 클래스

Exception은 예외를 담당하는 클래스이다.
ex) except Exception as e:

ex)
num1 = int(input('input number1 : '))
num2 = int(input('input number2 : '))

try:
print(f'num1 / num2 : {num1 / num2}')
except Exception as e:
print(f'exception : {e}')
print('0으로 나눌 수 없습니다.')
else:
print(f'num1 + num2 : {num1 + num2}')
print(f'num1 - num2 : {num1 - num2}')
print(f'num1 num2 : {num1 num2}')

print(f'num1 + num2 : {num1 + num2}')
print(f'num1 - num2 : {num1 - num2}')
print(f'num1 num2 : {num1 num2}')

출력값 :

input number1 : 10
input number2 : 0
exception : division by zero
0으로 나눌 수 없습니다.
num1 + num2 : 10
num1 - num2 : 10
num1 * num2 : 0

raise 키워드를 이용하면 예외를 발생시킬 수 있다.
ex) - raise Exception('0으로 나눌 수 없습니다')

33. 사용자 Exception 클래스

34. 텍스트 파일 쓰기(텍스트 파일을 파이썬으로 다뤄보자!)

기본함수 open() read() write() close()를 이용한 텍스트 파일 다루기

ex)
file = open('D:/pythonTxt/test.txt', 'w')

strCnt = file.write('hello python')
print(f'strCnt : {strCnt}')

file.close()

35. 텍스트 파일 읽기

import time

lt = time.localtime() #time.strftime() 더 세련되게

dateStr = '['+ time.strftime('%Y-%m-%d %H:%M:%S %p') + '] '

todaySchedule = input('오늘 일정 : ')

file = open('D:/pythonTxt/test.txt', 'w')
file.write(dateStr + todaySchedule)
file.close()

Y = 년
m(소) = 월
d(소) = 일

H = 시간
M = 분
S = 초

36. 텍스트 파일 열기

파일모드는 파일을 어떤 목적으로 open할지 정한다.
'w' : 쓰기 전용(파일이 있으면 덮어씌움)
'a' : 쓰기 전용(파일이 있으면 덧붙임)
'x' : 쓰기 전용(파일이 있으면 에러발생)
'r' : 읽기 전용(파일이 없으면 에러발생)

ex)

uri = 'D:/pythonTxt/'

'w' 파일모드
file = open(uri + 'hello.txt', 'w')
file.write('hellow python')
file.close()

'a' 파일 모드
file = open(uri + 'hello.txt', 'a')
file.write('\nNice to meet you')
file.close()

'x' 파일 모드
file = open(uri + 'hello_01.txt', 'x')
file.write('Nice to meet you')
file.close()

'x' 파일 모드
file = open(uri + 'hello_01.txt', 'r')
str = file.read()
print(f'str: {str}')
file.close()

37. 파일 닫기(close)를 생략한다.

with ~as문을 이용하면 파일 닫기(close)를 생략할 수 있다.

ex)

uri = 'D:/pythonTxt'

with open(uri + '5_037.txt', 'a') as f:
f.write('python study!!')

with open(uri + '5_037.txt', 'r') as f:
print(f.read())

38. writelines()

반복 가능한 자료형의 데이터를 파일에 쓰자!

  • '\n' <--개행

writelines()는 리스트(list) 또는 튜플 데이터를 파일에 쓰기 위한 함수이다.

ex)

languages = ['c/c++', 'java', 'c#', 'python','javascript']

uri = 'D:/pythonTxt/'
for item in languages:
with open(uri + 'languages.txt', 'a') as f:
f.write(item)
f.write('\n')

uri = 'D:/pythonTxt/'
with open(uri + 'languages.txt', 'a') as f:
f.writelines(item + '\n' for item in languages)

with open(uri + 'languages.txt', 'r') as f:
print(f.read())

39. readlines(), readline() [여러줄 읽기, 한 줄 읽기]

readlines() : 파일의 모든 데이터를 읽어서 리스트 형태로 반환한다.
readline() : 한 행을 읽어서 문자열로 반환한다.

ex)

scoresDic = {}

uri = 'D:/pythonTxt/'
with open(uri + 'scores.txt', 'r') as f:
line = f.readline()

 while line != '':
     tempList = line.split(':')    * split함수는 :기준으로 정열
     scoresDic[tempList[0]] = int(tempList[1].strip('\n'))
     line = f.readline()

print(f'scores dic : {scoresDic}')

profile
안녕하세요~

0개의 댓글