rb1 = Robot('red', 200, 80)
rb2 = Robot('blue', 300, 120)
rb3 = rb1 -> rb3도 rb1의 메모리주소를 가져옴. rb1의 객체가 복사된것이 아니라, 객체의 메모리주소를 복사한것! 따라서 rb1의 객체가 바뀌면 rb3의 객체도 바뀜
객체 복사 : 얕은복사, 깊은복사
얕은복사 : 객체 주소를 복사. 객체 자체가 복사되진 X (하나의 메모리주소를 공유)
-> 같은 주소를 공유하고 있는 하나의 객체가 수정되면 다른 객체 역시 수정됨
tc1 = TemCls(10, 'Hello')
tc2 = tc1
import copy
tc1 = TemCls(10, 'Hello')
tc2 = copy.copy(tc1)
scores = [9, 8, 5, 7, 6, 10]
scoresCopy = []
for s in scores:
scoresCopy.append(s)
scores = [9, 8, 5, 7, 6, 10]
scoresCopy = []
scoresCopy.extend(scores)
scores = [9, 8, 5, 7, 6, 10]
scoresCopy = []
scoresCopy = scores.copy()
scores = [9, 8, 5, 7, 6, 10]
scoresCopy = []
scoresCopy = scores[:]
class TurboCar(NormalCar):
-> TurboCar 클래스는 NormalCar 클래스를 상속함 -> NormalCar의 기능을 전부 사용가능.
다중 상속
class Car(Car01, Car02, Car03):
-> 3개의 클래스 모두 상속
오버라이딩
from abc import ABCMeta
from abc import abstractmethod
class Airplane(metaclass=ABCMeta):
@abstractmethod
def flight(self):
pass
try:
print(n1 / n2)
except:
print('예상치 못한 예외가 발생했다')
print('다른 프로그램 실행에는 문제가 없다!')
-> try를 실행해보고 예외가 발생한다면 except를 실행
except Exception as e:
print(f'exception : {e}')
-> 예외발생시 'exception : division by zero' 라고 뜸
def divCalculator(n1, n2):
if n2 != 0:
print(f'{n1} / {n2} = {n1 / n2}')
else:
raise Exception('0으로 나눌 수 없습니다.')
-> 예외가 발생하는 조건을 직접 만들 수 있음. 예외 문구도 직접 쓸 수 있음.
class NotUseZeroException(Exception):
def __init__(self, n):
super().__init__(f'{n}은 사용할 수 없습니다.')
<생각>
하나하나 이해하고 따라가려면 시간이 너무 많이 걸리고
쭉 진도만 빼려면 이해가 안가서 점점 어려워져 내용을 놓치게 되는데
이 사이의 합의점을 찾아야 할 것 같다..
원래 공부스타일은 1회독-이해안가도 대충 듣고 넘김, 2회독-조금 친해짐, 3회독-이제 슬슬 이해되고 머리에 들어옴 이런식으로 다회독하면서 익히는 성향인데, 그렇게 하기엔 내용이 많고 진도가 빨라서 그게 될지 잘 모르겠다
일단은 이해가 안돼도 코드 직접 다 쳐보고 이해가 잘 안돼도 진도부터 빼면서 강의듣는중
벨로그에서 코드 쓰는법을 드디어 알았다..!
<제로베이스 데이터 취업 스쿨>