๊ฐ์ฒด์ ๊ฐ๋
๊ฐ์ฒด๋ ์์ฑ(ํน์ง, ์ํ)๊ณผ ํ์(๋์, ํ๋)๋ก ๊ตฌ์ฑ๋ ๋์์ ์๋ฏธํ๋ค. ๊ฐ์ฒด๋ ์ด๋ค ์ฌ๋ฌผ, ์ฌ๋ ํน์ ๊ฐ๋ ์ด ๋ ์๋ ์๋ค.
โ์์ฑโก๏ธ๋ณ์ : ๊ฐ์ฒด๊ฐ ์ฌ๋์ด๋ผ๋ฉด ์ด๋ฆ, ๋์ด, ์ฑ๋ณ ๊ฐ์ ํน์ง์ด ๋ณ์๊ฐ ๋๊ณ ,
ํ์โก๏ธํจ์ : ๋ฉ์ถฐ์๊ฑฐ๋ ๋ฐ๋ ํ์๊ฐ ํจ์๋ก ๊ตฌํ๋๋ค.
๋ฐ๋ก ์ด์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ด์ฉํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ํน์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ผ๊ณ ํ๋ค.
ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ
๋ฌ๋ฌํ ์ด์ฝ๋ฆฟ๊ณผ ์ด์ฝ๋ฆฟ ๋ชฐ๋์ ๋์ ๊ด๊ณ๋ฅผ ๋น์ ํด๋ณด์. ์ด์ฝ๋ฆฟ์ ๊ฐ์ฒด, ๋ชฐ๋๋ ํด๋์ค๋ก
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ์ด๊ณ ๊ฐ์ฒด๋ ํ์ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ์ด๋ค.
์ค์ํ ํฌ์ธํธ๋ ํด๋์ค๊ฐ ๊ฐ์ฒด๋ค์ ๊ณตํต๋ ์์ฑ๊ณผ ํ์๋ฅผ ๋ฌถ์ด ๋ณ์์ ํจ์๋ก ์ ์ํ ๊ฒ์ด๋ฉฐ
๊ฐ์ฒด์ ์์ฑ์ ์ง์ ํ ๋ณ์์ ๊ฐ์ ๊ฐ๋ค๋ง ํ ๋นํ๋ ๊ฑด ํ์์ ์ด์ง ์๋ค.
์ด์ฝ๋ฆฟ ๋ชฐ๋์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ฌ๋ฃ(๊ฐ)๋ฅผ ๋ฃ์ผ๋ฉด ํ์ดํธ ์ด์ฝ๋ฆฟ, ์๋ชฌ๋ ์ด์ฝ๋ฆฟ, ๋คํฌ ์ด์ฝ๋ฆฟ์ด ๋์ค๋ ๊ฒ์ฒ๋ผ
์ํฉ์ ๋ฐ๋ผ ๋ณ์์ ํ ๋น๋๋ ๊ฐ์ด ๋ฌ๋ผ์ง๊ณ ๊ทธ์ ๋ฐ๋ฅธ ๊ฐ์ฒด์ ์์ฑ๋ ๋ฌ๋ผ์ง๋ค.
๊ฐ์ฒด์ ์ธ์คํด์ค์ ๊ด๊ณ
ํน์ ๊ฐ์ฒด๊ฐ ์ด๋ค ํด๋์ค์ ์ํ ๋ ๊ทธ ๊ฐ์ฒด๋ฅผ ํด๋์ค์ ์ธ์คํด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฌ๊ธฐ์ ์ ๊น '๊ทธ๊ฒ ๊ทธ๊ฑฐ ์๋๊ฐ..? ์ ๊ตณ์ด ๋ค๋ฅธ ๋จ์ด๋ฅผ ์ธ๊น?' ๋ผ๋ ์๊ฐ์ด ๋ค ์ ์๋๋ฐ
๊ทธ๋์ ๋ด๊ฐ ์ฝ๊ฒ ์ดํดํ ์์๋ฅผ ์ ์ด๋ณด์๋ค!
์ด๋ ธ์ ๋ ๋ฐฐ์ด ์ํ ๊ฐ๋ ๋ค ์ค ์งํฉ์ ๋ ์ฌ๋ ค ๋ณด์.
A๋ผ๋ ์งํฉ์ ์์๊ฐ {1, 2, 3}์ด๋ผ๊ณ ๊ฐ์ ํ ๋ ์์(๊ฐ์ฒด)๋ค์ A์งํฉ์ ์ธ์คํดํธ๋ค.
์ฆ, ๊ด์ ๋ง ๋ฐ๊ฟ์ ์๊ฐํ๋ฉด ์งํฉ์ ๊ฐ์ฒด๋ ์์์ธ๊ฒ์ด๊ณ , ์์๋ ์งํฉ์ ์ธ์คํดํธ์ธ ๊ฒ์ด๋ค.
์ด ๋ถ๋ถ์ ๊ฐ๋ ์ ๋ณด๋ ๊ฒ๋ณด๋ค ์ ์ฉ๋ ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ ๋ ํจ๊ณผ์ ์ผ ๊ฑฐ๋ผ ์๊ฐํ๋ค.
๊ฐ์ฒด์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ด ์์๋ถํฐ๋ ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ๐ง์ ์ฃผ๋ฌธ์ด ๋ค์ด์ค๋ ์์คํ ์ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. โบ๏ธ
๊ฐ๋จํ ์์ ์ด๋ฉด ์๊ด์์ง๋ง (๊ท๋ชจ๊ฐ ํฐ ํ๋ก์ ํธ) ๊ฐ์ฒด๊ฐ ๊ณ์ ๋์ด๋๊ฒ ๋๋ฉด ์๋์ฒ๋ผ ์ผ์ผ์ด ์ฐ๊ฒ ๋๋ค.
๊ทธ๋์ ๊ฐ๋ ์ฑ๊ณผ ํธ๋ฆฌํจ์ ์ํด ํด๋ผ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
flavor = "๋
น์ฐจ ํฐ๋ผ๋ฏธ์" # ์์ด์คํฌ๋ฆผ ๋ง
size = "Single King" # ์์ด์คํฌ๋ฆผ ์ฌ์ด์ฆ
price = 3000 # ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒฉ
print("{0} ์์ด์คํฌ๋ฆผ".format(flavor))
print("{0}์ฌ์ด์ฆ, {1}์".format(size, price))
Icecream_flavor = "๋ฐ๋๋ผ"
Icecream_size = "Double"
Icecream_price = 3500
print("{0} ์์ด์คํฌ๋ฆผ".format(Icecream_flavor))
print("{0}์ฌ์ด์ฆ, {1}์".format(Icecream_size, Icecream_price))
Icecream2_flavor = "์ด์ฝ๋ฆฟ ๋ด๋ด"
Icecream2_size = "half king"
Icecream2_price = 15000
print("{0} ์์ด์คํฌ๋ฆผ".format(Icecream2_flavor))
print("{0}์ฌ์ด์ฆ, {1}์".format(Icecream2_size, Icecream2_price))
# ์ถ๋ ฅ ๊ฒฐ๊ณผ
'''
๋
น์ฐจ ํฐ๋ผ๋ฏธ์ ์์ด์คํฌ๋ฆผ
Single King์ฌ์ด์ฆ, 3000์
๋ฐ๋๋ผ ์์ด์คํฌ๋ฆผ
Double์ฌ์ด์ฆ, 3500์
์ด์ฝ๋ฆฟ ๋ด๋ด ์์ด์คํฌ๋ฆผ
half king์ฌ์ด์ฆ, 15000์
'''
๊ทธ๋ ๋ค๋ฉด ํด๋ผ์ค๋ฅผ ์ฌ์ฉํด ์ข ๋ ๊น๋ํ๊ณ ํธ๋ฆฌํ ์ฝ๋๋ ๋ค์์ ํตํด ์์๋ณด๊ฒ ๋ค.
์์ฑ์(__init__) ํ์ฉํด ๋ง๋๋ ํด๋์ค
์์ฑ์๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ค. ๋ค์ ๊ท์ฐฎ์ ๊ฑฐ ๊ฐ์ง๋ง ์ด๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์์ฑ์ ์ง์ ํ๋ ๊ณผ์ ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ๋ ๊ฒ๋ณด๋ค ์ด๊ธฐํ ํจ์๋ฅผ ์ ์ํ๋ฉด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ๊ฐ์ฒด์ ์์ฑ์ ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
class ํด๋์ค๋ช
(object):
def __init__(self, ์์ฑ๊ฐ1, ์์ฑ๊ฐ2, ์์ฑ๊ฐ3)
self.์์ฑ๋ช
1 = ์์ฑ๊ฐ1
self.์์ฑ๋ช
2 = ์์ฑ๊ฐ2
self.์์ฑ๋ช
3 = ์์ฑ๊ฐ3
ํด๋์ค์์ ์ฌ์ฉํ๋ ๋ณ์๋ ํด๋์ค ๋ด ํจ์ ๋ฐ or ์ ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ๋ผ 2๊ฐ์ง๋ก ๋๋๋ค.
์ด๋ฅผ ์์ฑ์์ ํจ๊ป ์ฌ์ฉํด ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด ์ค ๊ฒ์ด๋ค.
1) ํด๋์ค ๋ณ์(class variable): ํด๋์ค ๋ด ํจ์ ๋ฐ์์ '๋ณ์๋ช = ๋ฐ์ดํฐ'ํ์์ผ๋ก ์ ์ํ ๋ณ์๋ก
ํด๋์ค์์ ์์ฑํ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณตํต์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
2) ์ธ์คํด์ค ๋ณ์(instance variable): ํด๋์ค ๋ด์ ํจ์ ์์์ 'self.๋ณ์๋ช = ๋ฐ์ดํฐ'ํ์์ผ๋ก ์ ์ํ ๋ณ์๋ก
ํด๋์ค ๋ด์ ๋ชจ๋ ํจ์์์ 'self.๋ณ์๋ช '์ผ๋ก ์ ๊ทผ ํ ์ ์๋ค.
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ ๋์ ๋ค๋ฅด๊ฒ init ํจ์๋ฅผ ์ฌ์ฉํด ์ฃผ๋ฌธ ์ ์์ด์คํฌ๋ฆผ์ ๋ง, ์ฌ์ด์ฆ, ๊ฐ๊ฒฉ์ ์ค์ค๋ก ํธ์ถํ ์ ์๋๋ก ํ์๊ณ ๋์์ ๋์ด๋๋ ์ฃผ๋ฌธ๋์ ์ ์ ์๋๋ก ํ๊ธฐ ์ํด ์ธ์คํด์ค ๋ณ์์ 1์ ๋ํด์คฌ๋ค.
class order():
Instance_count = 0 # ํด๋์ค ๋ณ์
def __init__(self, flavor, size, price):
self.flavor = flavor #์ธ์คํด์ค ๋ณ์
self.size = size #์ธ์คํด์ค ๋ณ์
self.price = price #์ธ์คํด์ค ๋ณ์
order.Instance_count = order.Instance_count + 1 # ํด๋์ค ๋ณ์ ์ด์ฉ -> ๋์ด๋๋ ์ฃผ๋ฌธ๋ ์ธ๊ธฐ
print("- ์ฃผ๋ฌธ{0} -".format(order.Instance_count))
print("{0} / {1}size / {2}์".format(self.flavor, self.size, self.price))
customer1 = order("์ด์ํ ๋๋ผ์ ํ ๋ผ", "single ", 2500)
customer2 = order("์ฝ๋ก๋ ์ ๋ฆฌ๊ฐ ๋ง", "Double King ", 4500)
customer3 = order("์ฌํ๊ฐ๊ณ ์ถ์ ๋ง", "family ", 17500)
# ์ถ๋ ฅ ๊ฒฐ๊ณผ
'''
- ์ฃผ๋ฌธ1 -
์ด์ํ ๋๋ผ์ ํ ๋ผ / single size / 2500์
- ์ฃผ๋ฌธ2 -
์ฝ๋ก๋ ์ ๋ฆฌ๊ฐ ๋ง / Double King size / 4500์
- ์ฃผ๋ฌธ3 -
์ฌํ๊ฐ๊ณ ์ถ์ ๋ง / family size / 17500์
'''
๋ค์์ ํด๋์ค์์ ์ฌ์ฉํ๋ ํจ์๋ค(์ธ์คํด์ค ๋ฉ์๋, ์ ์ ๋ฉ์๋, ํด๋์ค ๋ฉ์๋)์ ๋ํด ์์ธํ ๋ค๋ค๋ณผ ๊ฒ์ด๋คโญ
'IT ๐ป > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฆฌ์คํธ, ํํ, ์ธํธ ํ์ ๋ณํํ๊ธฐ (0) | 2022.03.01 |
---|---|
[Python] ์๋ฃํ_๋์ ๋๋ฆฌ ๊ฐ๋ ๋ฐ ํจ์ ํ์ฉ๋ฒ (0) | 2022.03.01 |
[Python] ์๋ฃํ_์ธํธ ๊ฐ๋ ๋ฐ ํจ์ ํ์ฉ๋ฒ (0) | 2022.03.01 |
[Python] ์๋ฃํ_ํํ ๊ฐ๋ ๋ฐ ํจ์ ํ์ฉ๋ฒ (0) | 2022.03.01 |
[Python] ์๋ฃํ_๋ฆฌ์คํธ ๊ฐ๋ ๋ฐ ํจ์ ํ์ฉ๋ฒ (0) | 2022.02.28 |