이번 시간에는 절차지향과 객체지향의 차이, 그리고 객체지향 프로그래밍의 장점, 마지막으로 클래스 기반 코드 작성 실습까지 해보겠다.
# ch02-01
# OOP -> 코드 재사용, 코드 중복 방지
car_company_list = ["현대", "기아", "삼성", "벤츠"]
del car_company_list[2]
print(car_company_list)
이건 그냥 예제 중 하난데
del
이라는 신기한 명령어가 있어서 기록을 남긴다. (내용 자체는 OOP의 기초적인 내용이라 적진 않고 있다.
del
은 파이썬에서 변수, 객체, 리스트의 요소, 딕셔너리의 키, 또는 기타 참조값들을 말 그대로 삭제하는데 쓰인다.삭제된 객체는 더이상 접근할 수 없고, 이렇게 삭제되어 참조카운터가 0이 되면 가비지 컬렉터가 메모리에서 free해버린다.💡 이
del
은__del__
이라는 매직메서드를 호출하는 역할을 한다. 따라서 클래스 내에서 ****__del__
을 오버라이딩 하면del
의 역할을 변경할 수 있다.참고로 리스트 요소를 삭제하면 인덱스 재정렬까지 일어난다… 이런 편의기능까지..?
전시간까지 내용을 남기지 않았지만… 리스트형태로 데이터를 다루는 것 까지 했다. 이번시간에는 파이썬만의 자료구조인 딕셔너리로 데이터를 다뤄본다.
# 딕셔너리
car_dicts = [
{'car_company' : '현대', 'car_detail' : {'color' : 'white', 'horsepower' : 400}},
{'car_company' : '기아', 'car_detail' : {'color' : 'black', 'horsepower' : 300}},
{'car_company' : '벤츠', 'car_detail' : {'color' : 'silver', 'horsepower' : 500}}
]
파이썬에서 큰 데이터를 주로 딕셔너리 형태로 다룬다고 한다. 지금수준에선 딕셔너리 타입이 어떤 장점이 있는지는 모르겠다. 메모리내 패딩이 없도록 최적화해주나..? 그리고 위처럼 딕셔너리내 딕셔너리를 중첩해서 관리할 수도 있다고 한다…
위 예시는 키가 모두 같지만, 리스트내 인덱스를 통해서 각각의 딕셔너리를 관리할 수 있는 예제이다.
리스트 내부에 있기 때문에
del
로 지울 수도 있지만, 딕셔너리 타입은pop()
메서드를 통해 특정 키에 해당하는 값을 반환하면서, 동시에 해당 키-값 쌍을 딕셔너리에서 제거할 수 있다고 한다.
# 딕셔너리
car_dicts = [
{'car_company' : '현대', 'car_detail' : {'color' : 'white', 'horsepower' : 400}},
{'car_company' : '기아', 'car_detail' : {'color' : 'black', 'horsepower' : 300}},
{'car_company' : '벤츠', 'car_detail' : {'color' : 'silver', 'horsepower' : 500}}
]
print(car_dicts[0].get('car_detail').get('horsepower'))
print(car_dicts[0].get('car_detail').get('color'))
print(car_dicts[0].get('car_company'))
딕셔너리는 위와같이 get([키])
형식으로 탐색할 수 있다.