본문 바로가기

Challenge/SK 뉴스쿨 정보보안과 3기

SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.08)

728x90
반응형

 

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)

 

 

하나의 디렉터리에 놓여진 모듈들의 집합

패키지는 모듈들의 컨테이너로서 패키지 안에는 또다른 서브 패키지 포함 가능

 

 

패키지 실습 코드

 

calcpkg 패키지 만들고 안에 geometry.py 와 operation.py 모듈 만들기

 

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()
728x90
반응형