๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT ๐Ÿ’ป/Python

[Python] ์‰ฌ์šด ์˜ˆ์ œ๋กœ ์•Œ์•„๋ณด๋Š” ์ƒ์„ฑ์ž, ํด๋ž˜์Šค, ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค

by Daphne_Kim 2022. 4. 5.
SMALL
๊ฐ์ฒด์˜ ๊ฐœ๋… 

๊ฐ์ฒด๋Š” ์†์„ฑ(ํŠน์ง•, ์ƒํƒœ)๊ณผ ํ–‰์œ„(๋™์ž‘, ํ–‰๋™)๋กœ ๊ตฌ์„ฑ๋œ ๋Œ€์ƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ์ฒด๋Š” ์–ด๋–ค ์‚ฌ๋ฌผ, ์‚ฌ๋žŒ ํ˜น์€ ๊ฐœ๋…์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

โ€‹์†์„ฑโžก๏ธ๋ณ€์ˆ˜ : ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์ด๋ฆ„, ๋‚˜์ด, ์„ฑ๋ณ„ ๊ฐ™์€ ํŠน์ง•์ด ๋ณ€์ˆ˜๊ฐ€ ๋˜๊ณ ,
ํ–‰์œ„โžก๏ธํ•จ์ˆ˜ : ๋ฉˆ์ถฐ์žˆ๊ฑฐ๋‚˜ ๋›ฐ๋Š” ํ–‰์œ„๊ฐ€ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„๋œ๋‹ค.

๋ฐ”๋กœ ์ด์ฒ˜๋Ÿผ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์ด์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(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์› 
'''

๋‹ค์Œ์€ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋“ค(์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ, ์ •์  ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ค„๋ณผ ๊ฒƒ์ด๋‹คโญ

 

SMALL