DS School Week2-2 파이썬 중급2

Henny Song·2023년 5월 10일
0

DS Studylog

목록 보기
6/38
post-thumbnail

오늘 학습 목표

  • 파이썬 중급 ~9 강의 수강

주요 학습 내용

  • 사용자 Exception은 복습을 시작하며 처음 풀지못한 예제였다.
    Exception 클래스 생성 -> (예외 발생 조건식 -> 실행)
    순서로 진행됨을 잊지 말자.

학습 내용

1. 객체와 클래스

  • 객체지향 프로그래밍 이란?

    • 객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성됨.

      객체(Object) = 속성(Attribute) + 기능(Function)

    • 객체는 클래스를 통해 생성 (클래스는 객체를 만들기 위한 틀)
    • 객체 사용의 장점 : 코드 재사용, 모듈화에 좋음
  • 클래스 만들기

    • 속성(변수), 기능(함수)를 만들어줌.
    class Name:
    	def __init__(self, v1, v2):
      	  self.var1 = v1
          self.var2 = v2
    
        def function(self):
          pass 
  • 객체 생성

    var = Class(v1, v2)
    • 객체가 생성될 때 클래스의 생성자를 호출하며, __init__() 함수가 자동으로 호출됨.
    • __init__()은 속성을 초기화한다.
  • 객체 속성 변경

    • var.v1 = v2 → 속성을 호출해 변경 가능
  • 객체와 메모리

    • 객체가 메모리에 생성되면, 변수로 메모리에 할당된 객체를 참조할 수 있게 함. 변수 안에 객체의 메모리 주소가 저장됨.
    • 얕은복사 : 객체를 참조하는 주소를 복사
      var2 = var1
    • 깊은복사 : 객체(속성 및 기능) 자체를 복사. 또 하나의 객체가 만들어짐.
      import copy 
      var2 = copy.copy(var1)
      • list 깊은복사

        ### list 깊은복사1 
        lsCopy = []
        for i in ls:
        	lsCopy.append(i)
        
        
        ### list 깊은복사2
        lsCopy = ls.copy()
        
        
        ### list 깊은복사3
        lsCopy = ls[:]

클래스 상속

  • 클래스 상속이란?
    • 또 다른 클래스를 상속해 내 것 처럼 사용할 수 있는 기능
    class ChildClass(ParentClass):
  • 상위 클래스의 속성값 초기화
    : 하위 클래스 객체 생성시 상위 클래스의 속성값은 초기화 되지 않음.
    • 하위 클래스 생성자 함수에 상위 클래스의 생성자 함수를 호출
      class ParentClass:
      	def __init__(self, var):
        	  self.var = var
      	
      class ChildClass(ParentClass):
      	def __init__(self, var)
          	ParentClass.__init__(self, var)
              self.var = var
    • super() 활용
      class ParentClass:
      	def __init__(self, var):
        	  self.var = var
      	
      class ChildClass(ParentClass):
      	def __init__(self, var)
          	super().__init__(var) # self를 안넣어도 됨.
              self.var = var  
  • 다중 상속
    • 2개 이상의 클래스를 상속
      class ChildClass(PClass1, PClass2, ... ):
      	실행문
  • 오버라이딩
    • 하위 클래스에서 상위 클래스의 메서드를 재정의하는것
      class PClass:
      	def __init__(self, var1, var2)
          	self.var1 = var1
              self.var2 = var2
              
          def function(self):
          	실행문
          
      class CClass(PClass):
       	def __init__(self, var1, var2):
          	super().__init__(var1, var2)
              
          def function(self):
          	new 실행문
      ※ 오버라이딩시 상위 클래스의 메서드값을 반환받아 사용할 수 있음.
      : super().function()

3. 추상클래스

  • 추상클래스란?
    • 하위 클래스의 메서드 구현을 강요

      from abc import ABCMeta
      from abc import abstractmethod
      
      class MClass(metaclass=ABCMeta):
      	@abstractmethod
          def function(self):
          	pass

4. 예외

  • 예외란
    • 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제
    • 예외 관련 클래스는 Exception클래스를 상속함.
  • 예외 처리
    • 예외가 프로그램 전체 실행에 영향이 없도록 처리
    • try~except
      try:
      	실행문
      except:
        예외 발생시 실행문
    • try~except~else
      try:
      	실행문
      except:
        예외 발생시 실행문
      else:
        예외가 발생하지 않을시 실행문 
      ※ else는 생략 가능하나, except는 생략 불가하다.
    • finally
      • 예외 발생과 상관없이 항상 실행
      try:
      	실행문
      except:
      	실행문
      finally:
      	실행문

5. Exception 클래스

  • Exception 클래스
    • 어떤 예외가 발생했는지에 대한 정보를 얻을 수 있다.
    try:
    	실행문 
    except Exception as e:
      	print(f'exception : {e}') 
  • raise
    • 예외를 발생시키는 키워드
    • 예)
      def divCalculator(n1, n2):
      	if n2 != 0:
         	    print(f'{n1} / {n2} = {n1/n2}')
          else:
         		raise Exception('0으로 나눌 수 없습니다.')
                 
      
      try : 
      	실행문
      except Eception as e:
      	print(e)
      	
  • 사용자 예외 클래스
    • Exception 클래스를 상속해서 만듬
    class NewException(Exception)
    	def __init(self ,n):
    		   super().__init__({n})
        
     def function():
     	if condition:
         	raise NewException()
    	
     try :
     	function()
     except NewException as e:
     	print(e)

다음 수강 계획

  • 파이썬 중급 7~9 강의 수강

0개의 댓글

관련 채용 정보