학습내용 : 파이썬 중급 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