2022년 4월 8일 프로그래밍 기초 파이썬 마지막 수업 정리
클래스(Class)
객체를 만드는 틀, 변수와 함수를 모아 넣은 것
*파이썬의 자료형들을 print로 찍어보면 class로 나온다.
print(int)
# 결과 : <class ‘int’>
객체(Object) vs 인스턴스(instance)
a = Coffee()에서 a는 객체이고, a객체는 Coffee의 인스턴스
*인스턴스라는 말은 특정 객체(a)가 어떤 클래스(Coffee)의 객체인지를 관계 위주로 설명할 때 사용
클래스와 객체 실습 코드
class case:
dough = 10
def make_red_bean(self, red_bean):
self.red_bean = red_bean
result = case.dough + self.red_bean
print(result)
def make_chocolate(self, chocolate):
self.chocolate = chocolate
result = case.dough + self.chocolate
print(result)
bread = case()
bread.make_red_bean(5)
bread.make_chocolate(5)
사칙연산 클래스 만들기 실습 코드
class CalC:
def __init__(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
def sub(self):
result = self.first - self.second
return result
def mul(self):
result = self.first * self.second
return result
def div(self):
result = self.first / self.second
return result
temp = CalC(2, 3)
print(temp.add())
print(temp.sub())
print(temp.mul())
print(temp.div())
상속(Inheritance)
기능을 상속하는 부모클래스(Parent Class, Super Class)와 기능을 상속 받는 자식 클래스(Child class, Sub Class)로 분류
자식 클래스가 부모 클래스의 내용을 가져다 쓸 수 있는 것
class 부모클래스:
내용
class 자식클래스(부모클래스):
내용
상속 실습 코드
class Country:
"""부모 클래스"""
name = '국가명'
population = '인구'
capital = '수도'
def show(self):
print('국가 클래스의 메소드입니다.')
class Korea(Country):
"""자식 클래스"""
def __init__(self, name):
self.name = name
def show_name(self):
print("국가 이름은 : ", self.name)
temp = Korea('대한민국')
temp.show()
temp.show_name()
매서드 오버라이딩(Method Overriding)
부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
부모 클래스의 메서드는 무시되고 자식클래스의 메서드가 수행
매서드 오버라이딩 실습 코드
class Country:
"""부모 클래스"""
name = '국가명'
population = '인구'
capital = '수도'
def show(self):
print('국가 클래스의 메소드입니다.')
class Korea(Country):
"""자식 클래스"""
def __init__(self, name, population, capital):
self.name = name
self.population = population
self.capital = capital
def show(self):
print(f"국가: {self.name}\n인구: {self.population}\n국가의 수도: {self.capital}")
temp = Korea('대한민국', 50000000, '서울')
temp.show()
부모 메서드 호출하기
class Country:
"""부모 클래스"""
name = '국가명'
population = '인구'
capital = '수도'
def show(self):
print('국가 클래스의 메소드입니다.')
class Korea(Country):
"""자식 클래스"""
def __init__(self, name, population, capital):
self.name = name
self.population = population
self.capital = capital
def show(self):
super().show()
print(f"국가: {self.name}\n인구: {self.population}\n국가의 수도: {self.capital}")
temp = Korea('대한민국', 50000000, '서울')
temp.show()
*super.show()추가하면 부모 클래스의 함수 불러옴
모듈(Module)
자주 사용되는 코드나 유용한 코드를 논리적으로 묶어서 관리하기 위해 사용
보통 하나의 Python.py 파일이 하나의 모듈이 되고 import하여 사용한다.
패키지(Packages)
하나의 디렉터리에 놓여진 모듈들의 집합
패키지는 모듈들의 컨테이너로서 패키지 안에는 또다른 서브 패키지 포함 가능
패키지 실습 코드
operation.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
geometry.py
def triangle_are(base, height):
return base * height / 2
def rectangle_area(width, height):
return width * height
main.py
import calcpkg.operation, calcpkg.geometry
print(calcpkg.operation.add(20, 10))
print(calcpkg.operation.sub(20, 10))
print(calcpkg.operation.mul(20, 10))
print(calcpkg.operation.div(20, 10))
print(calcpkg.geometry.triangle_are(30, 40))
print(calcpkg.geometry.rectangle_area(30, 40))
또는 __init__.py활용하기
init.py의 용도 :
해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다.
만약 패키지가 포함된 디렉터리에 init.py 파일이 없다면 패키지로 인식되지 않는다.
__init__.py 코드
__all__ = ['operation']
main.py 코드
from calcpkg import *
print(operation.add(20, 10))
print(operation.mul(20, 10))
예외 처리
정상적인 프로그램 흐름을 중단하고 주변의 컨텍스트 또는 코드 블록에서 계속하기 위한 메커니즘
try, except 구문
try 블록에서 오류가 발생하면 except 블록이 수행이되고, 오류가 발생하지 않으면 except 블록이 수행되지 않는다.
else와 finally 구문
else 구문은 예외가 발생하지 않는 경우 수행
finally 구문은 예외 발생 유무와 상관없이 수행
else-finally 구문 실습 코드
def div(a,b):
return a / b
try:
c = div(5, 2)
except ZeroDivisionError:
print("두 번째 인자는 0이면 안됨")
except TypeError:
print("모든 인수는 숫자여야 함")
except:
print("ZeroDivisionError, TypeError를 제외한 다른 에러")
else:
print(c)
finally:
print("항상 finally 블록은 수행")
raise 실습 코드
class MyError(Exception):
def __str__(self):
return "에러 발생"
def animal(name):
if name == '사과':
raise MyError()
print(name)
animal('강아지')
animal('사과')
PDB(Python Debugger)
Python 디버깅 도구
실행 방법
python -m pdb example.py
pdb 모듈을 import 한 후, pdb.set_trace()를 중단하고 싶은 곳에 삽입
import pdb
pdb.set_trace()
'Challenge > SK 뉴스쿨 정보보안과 3기' 카테고리의 다른 글
[SK 뉴스쿨 정보보안과 3기] - SK 뉴스쿨 지원 동기 및 과정 #꿀팁#면접#자기소개서#정보보안#지원동기#화이트해커 (0) | 2022.06.04 |
---|---|
SK 뉴스쿨 프로그래밍 기초 웹 (2022.04.11) (1) | 2022.04.19 |
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.07) (0) | 2022.04.08 |
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.05) (0) | 2022.04.08 |
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.04) (1) | 2022.04.08 |