3월15일 학습노트

김정인·2023년 3월 15일
0

데이터스쿨13기

목록 보기
7/17

학습내용 : 파이썬 중급 20~39

객체와 메모리

  • 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.
  • 새로운 객체를 만들기 위해서는 copy를 이용해야 함.

얕은복사와 깊은복사

  • 얕은복사 : 객체주소를 복사하는 것으로 객체 자체가 복사되지 않는다. (동일객체)
  • 깊은복사 : 객체 자체를 복사하는 것으로 또 하나의 객체가 만들어진다.
import copy / for문 / 변수[:] / 변수.copy()

클래스 상속

  • 클래스는 또 다른 클래스를 상속해서 내 것처럼 사용할 수 있다.
class NormalCar:
	
    def drive(self):
    	print('[NormalCar] drive() called!')
        
    def back(self):
    	print('[NormalCar] back() called!')
        
class TurboCar(NormalCar)            # ()에 넣어줌으로써 상속

	def turbo(self):
    	print('[TurboCar] turbo() called!')

myTurboCar = TurboCar()
myTurboCar.turbo()
myTurboCar.drive()
myTurboCar.back()
--------------------------------------------------
[TurboCar] turbo() called!
[NormalCar] drive() called!
[NormalCar] back() called!

생성자01

  • 객체가 생성될 떄 생성자를 호출하면 _ init _()가 자동 호출된다.
  • _ init _ ()가 속성을 초기화 한다.

다중상속

  • 2개 이상의 클래스를 상속
  • 다중상속을 난발하면 코드가 중복되어 헷갈리는 다중상속에 늪에 빠질 수 있음. 꼭 필요한 경우에 사용하는 것이 좋음

오버라이딩

  • 하위 클래스에서 상위 클래스의 메서드를 재정의한다.

추상클래스

  • 상위클래스에서 하위 클래스에 메서드 구현을 강요
  • 공통적인 기능을 각자 알아서 구현하여 사용해야할 떄 이용
from abc import ABCMeta
from abc import abstractmethod

class AirPlane(metaclass=ABCMeta):

	@abstractmethod
    def flight(self):
    	pass
    
    def forward(self):
    	print('전진!')

class AirLiner(AirPlane):

	def __init__(self, c):
    	self.color = c
        
    def flight(self):
    	print('시속 400km 비행!')

예외란?

  • 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제이다.
  • 예외 관련 클래스는 Exception 클래스를 상속한다.
    ArithmeticError - ZeroDivisionError
    Enviroment Error - IOError
    LookupError - IndexError
    SyntaxError - IndentationError

예외처리

  • 예상하지 못한 예외가 프로그램 전체 실행에 영향이 없도록 처리함.
  • 예외 발생 예상 구문을 try ~ except로 감싼다.
n1=10; n2=0

try:
print(n1/n2)
except:
	print('예상치 못한 예외발생')
    print('다른 프로그램 실행 문제 없음')
    
print(n1*n2)
print(n1+n2)
print(n1-n2)

----------------------------------------
예상치 못한 예외발생
다른 프로그램 실행 문제 없음
0
10
10

0개의 댓글