๐ [Python] แแ ณแฏแ แ ขแแ ณ & แแ ฆแแ ฉแแ ณ แแ ตแทแแ ช - 1แแ ฎ
on
๋ค์ด๊ฐ๋ฉฐ
๊ณผ๊ฑฐ์ ๊ท๋ชจ๊ฐ ํฐ ํ๋ก์ ํธ ํน์ ํ๋ก๊ทธ๋จ๋ค์ ๋๋ถ๋ถ ํจ์ ์ค์ฌ์ผ๋ก ์ฝ๋ฉ์ด ๋์๋ค. ํ๋ก๊ทธ๋จ์ด ๊ณ์ํด์ ๊ฐ์ ๋ ์๋ก ๋ฐ์ดํฐ๊ฐ ๋ฐฉ๋ ํด์ง๊ณ , ๋ฉ์น๊ฐ ์ปค์ง๊ฒ ๋๋ค. ์ด๋ฌํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ฌธ์ ๋ ์ฝ๋์ ์ค๋ณต๊ณผ ํ์ ๋ฅ๋ ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค. ์ฆ, ๋ณต์กํด์ง๊ฒ ๋๋ค.
์ด๋ฅผ ๊ฐ์ ํ๊ฒ ํด๋์ค ์ค์ฌ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ค. ํด๋์ค๊ฐ ์ค์ฌ์ด๋ผ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์ค์ฌ์ ์๊ณ , ๊ฐ์ฒด๋ก ๊ด๋ฆฌ ๋๋ค๋ ์๋ฏธ์ด๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ๊ณผ ์ค๋ณต๋ฐฉ์ง ์ ์ง๋ณด์๊ฐ ์ฝ๊ฒ ๋๋ค. ์ฆ, ๋ํ ํ๋ก์ ๋์ ์ ํฉํ ์ฝ๋ฉ ๋ฐฉ์์ด๋ค.
๋ณธ๋ก
์ผ๋ฐ์ ์ธ ์ฝ๋ฉ
๊ณผ๊ฑฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฐจํ ํ๋ก๊ทธ๋๋ฐ ํ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์๋ค. ์ด๋ฌํ ์ฝ๋ฉ์ ๋จ์ ์ ์ฐจ๋์ด ๋์ด ๋ ์๋ก ์ฝ๋์ ์์ด ๋ง์์ง๋ค๋ ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค.
# Chapter02-01
# ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ -
# ์ฐจ๋1
car_company_1 = 'Ferrari'
car_detail_1 = [
{'color': 'white'},
{'horsepower': 400},
{'price': 8000}
]
# ์ฐจ๋2
car_company_2 = 'BMW'
car_detail_2 = [
{'color': 'black'},
{'horsepower': 400},
{'price': 8000}
]
# ์ฐจ๋3
car_company_3 = 'BMW'
car_detail_3 = [
{'color': 'Silver'},
{'horsepower': 300},
{'price': 6000}
]
๋ฆฌ์คํธ ๊ตฌ์กฐ
์์ ์ฝ๋ ์์ฑ ๋ฐฉ์์ด ์ฝ๋ ์์ด ๋ง์ ์ง๋ค๋ ๋จ์ ์ด ์กด์ฌํจ๊ณผ ๋์์ n๋ฒ์งธ ์ฐจ๋์ ์ ๊ทผํ๊ธฐ ์ํด์ ํญ์ ๋ณ์๋ช ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค๋ ๋นํจ์จ์ฑ์ด ์กด์ฌ ํ๋ค. ์ด๋ฅผ ๊ฐ์ ํ์ฌ ๋ฆฌ์คํธ ๊ตฌ์กฐ๋ก ์ฝ๋๋ฅผ ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
# ๋ฆฌ์คํธ ๊ตฌ์กฐ
car_company_list = ['Ferrari', 'BMW', "Audi"]
car_detail_list = [
{'color': 'white', 'horsepower': 400, 'price': 800},
{'color': 'black','horsepower': 400, 'price': 800},
{'color': 'Silver','horsepower': 300, 'price': 6000}
]
์์ ์ฝ๋์ ๋ฌธ์ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋ฆฌ์คํธ๋ ํญ์ ์ธ๋ฑ์ค๋ก ์ ๊ทผ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ car_detail_list
์ ์๋ ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๋ฅผ ์ํญ ํ ๊ณ ์์ด์ผ ํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
์ฆ, ๋ฐ์ดํฐ๊ฐ ๋ง์ ์ง์๋ก ์ ์ง ๋ณด์๊ฐ ์ด๋ ค์ ์ง๋ค. ์๋ฅผ ๋ค๋ฉด ์ด๋ ๊ฒ ๋ฆฌ์คํธ ๋จ์๋ก ๊ด๋ฆฌ๋ฅผ ํ ๋, ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ ์ถ์ผ๋ฉด del
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ด๋ฅผ ์ง์์ผ ํ๊ณ , ๋ฐ์ดํฐ์ ๊ฐ์ ์์ ํ๊ณ ์ถ์ ๋๋ pop
์ ํด์ ์ด๋ฅผ ์์ ํด์ dict
ํ์ผ์ ์ง์์ผ ํ๋ค.
ํด๋์ค ๊ตฌ์กฐ
ํด๋์ค ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋ฉ์ ์งํํ๋ฉด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ์ฆ๊ฐํ๊ณ , ์ฝ๋ ๋ฐ๋ณต์ ์ต์ํ, ๋ฉ์๋ ํ์ฉ์ฑ์ด ์ฆ๊ฐ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ณต์กํ ํ๋ก์ ํธ ๋จ์ ์ผ ์๋ก ํด๋์ค ๊ธฐ๋ฐ ์ฝ๋ฉ์ ๊ถ์ฅ ํ๋ ๊ฒ์ด๋ค.
# ํด๋์ค ์ ์ธ
class Car():
pass
class Car:
pass
class Car(object):
pass
์์ ์ฝ๋์ ๊ฐ์ด ํด๋์ค ์ ์ธ์ด ๊ฐ๋ฅํ๋ค. object
๊ฐ์ฒด๋ฅผ ์ธ์๋ก ์
๋ ฅํ์ง ์์๋. ์๋์ผ๋ก ์
๋ ฅ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์
๋ ฅํ์ง ์์๋ ๋์ง๋ง, ๋ช
์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ํ, ()
๋ฅผ ๋ช
์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋ค์๊ณผ ๊ฐ์ด ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ณด์.
class Car():
def __init__(self, company, details) -> None:
self._company = company
self._details = details
์์ ๊ฐ์ด ํด๋์ค๋ฅผ ๋ง๋ ํ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ์คํด์ค ์์ฑ ํ, ์ด๋ฅผ print
๋ก ํธ์ถ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ ๋ฉ๋๋ค.
car1 = Car("Ferrari", {'color': 'white', 'horsepower': 400, 'price': 800})
print(car1)
<__main__.Car object at 0x10aafcd30>
์ธํธํด์ค๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์ ๋ณด๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ด๊ณ , ์ด๋ ํ์ด์ฌ์ ๋งค์ง ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅ๋ฌธ์ ๋ฐ๊ฟ ์ค ์ ์์ต๋๋ค.
class Car():
def __init__(self, company, details) -> None:
self._company = company
self._details = details
def __str__(self) -> str:
return f'str : {self._company} - {self._details}'
์ถ๊ฐ๋ก, __dict__
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํด๋์ค ๋ด๋ถ์ ๋ณ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
print(car1.__dict__)
# {'_company': 'Ferrari', '_details': {'color': 'white', 'horsepower': 400, 'price': 800}}
์ธ์คํด์ค์ ๋ด๋ถ ๋ณ์ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ ๋ฉ์๋๋ __dict__
์ด์ง๋ง, ๋ฉํ ์ ๋ณด ์ฆ, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฉ์๋ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ ํจ์๋ dir
์
๋๋ค.
print(dir(car1))
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_company', '_details']
dir
๋ก ์ฐ์ด๋ณธ ๊ฒฐ๊ณผ๋ฌผ์ ์ดํด ๋ณด๋ฉด ์ด๋ฏธ __str__
๋ฉ์๋์ __repr__
๋ฉ์๋๊ฐ ์๋ ๊ฒ์ ์ดํด ๋ณผ ์ ์์ต๋๋ค. ์ฆ, ๋งค์ง ๋ฉ์๋๋ ํ์ด์ฌ์์ ๋ฏธ๋ฆฌ ๊ตฌํ์ ํด๋์๊ณ ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์์ ํ ์ ์๊ฒ ๊ธ ๋ง๋ค์ด ๋์ ๋ฉ์๋ ์
๋๋ค.
์ ๋ฆฌํ๋ฉด, dir
๋ฉ์๋๋ ํด๋์ค๊ฐ ์์๋ฐ์ ํด๋์ค์ ๋ชจ๋ ์ ๋ณด๋ฅผ ํ์ ํด์ค๋๋ค. ๋๋ฌธ์ ์ด๋ฅผ ๋ฉํ ์ ๋ณด๋ผ๊ณ ํ๋ ๊ฒ์ด๊ณ , __dict__
๋ ํ์ฌ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ํด๋์ค์ ์ดํธ๋ฆฌ๋ทฐํธ๋ง ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ ํ๋ ๊ฒฐ๊ณผ๋ง์ด ์ถ๋ ฅ๋๋ ๊ฒ ์
๋๋ค.
(ํด๋์ค๋ฅผ ์์ฑํ ๋ object
๋ฅผ ๋ช
์ํ์ง ์์๋ ์ด๋ฅผ ์๋์ผ๋ก ์์ ๋ฐ์)