1교시 : 절차지향 vs 객체지향
나는 이전에 초급 파이썬 강의를 들으면서 가장 기본적으로 데이터 집합의 형태 그리고 함수들에 대해서 공부하였다. 그러한 것들을 하나 하나 위에서부터 아래로 적어나가는 것이 절차지향 코딩이다.
#차량1
car_company_1 = 'Ferrari'
car_detail_1 = [
{'color':'White'},
{'horsepower':4000},
{'price':8000}
]
#차량2
car_company_2 = 'BMW'
car_detail_1 = [
{'color':'Black'},
{'horsepower':5000},
{'price':10000}
]
# 이러한 방식으로 코딩을 하면 시간도 많이 걸리고 유지와 보수에 어려움이 많음
# 그렇다면 위의 코드들을 하나의 코드 묶음으로 다음과 같이 어떻게 될까??????
car_company_lists = ['Ferrari','BMW']
car_details = [
{'color':'White','horsepower':4000},'price':8000}),
{'color':'Black','horsepower':5000},'price':10000}
]
#이러한 식으로 하나의 코드로 바꿔도 문제가 된다 그 이유는 지금처럼 자료의 양이 적을 경우는 인덱싱을 쉽게 하지만 자료가 방대해질 경우 인덱싱에서 실수가 발생해서 자료를 삭제 수정에 실수가 발생할 수 있기 때문이다.
#그래서 이러한 번거러움 피하고 실수가능성을 줄이기 위해 다음과 같이 클래스를 만들어 사용한다.
class car() :
def__init__(self, company, details) :
self._company = company
self._details = details
def__str__(self) :
return 'str : {}-{}'.format(self._company, self._details)
def__repr__(self) :
return 'repr : {}-{}'.format(self._company, self._details)
# 결과출력
위와 같이 만든 클래스를 가지고 결과를 한번 만들어보자.
car1 = car('현대',{'color':'White','horsepower':4000,'price':8000})
print(car1.__dict__)
#결과
{'_company': '현대', '_details': {'color':'White','horsepower':4000,'price':8000}}
# 만약 우리가 print(car1)을 할경우 str : {}-{}의 형태로 나오고(비공식적 형태)
# 우리가 print(repr(car1)으로 할경우 repr : {}-{}의 형태로 나온다.