Skip to content

Latest commit

ย 

History

History
173 lines (167 loc) ยท 7.12 KB

File metadata and controls

173 lines (167 loc) ยท 7.12 KB

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์˜์–ด: Object-Oriented Programming, OOP) ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋•Œ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘ฌ์•ผํ•  ์•„์ฃผ ์ค‘์š”ํ•œ ํฌ์ธํŠธ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฝ”๋“œ๋Š” ํ•ญ์ƒ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•œ๋‹ค. ์ด๋ฆ„, ์—๋„ˆ์ง€, ๋ฐ๋ฏธ์ง€, ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ๊ฐ„๋‹จํ•œ ์ผ€๋ฆญํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค

hero_name = '์•„์ด์–ธ๋งจ' hero_health = 100 hero_damage = 200 hero_inventory = [ {'gold': 500}, {'weapon': '๋ ˆ์ด์ €'} ] ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๊ธฐ

ํžˆ์–ด๋กœ 1

hero_1_name = '์•„์ด์–ธ๋งจ' hero_1_health = 100 hero_1_damage = 200 hero_1_inventory = [ {'gold': 500}, {'weapon': '๋ ˆ์ด์ €'} ]

ํžˆ์–ด๋กœ 2

hero_2_name = '๋ฐ๋“œํ’€' hero_2_health = 300 hero_2_damage = 30 hero_2_inventory = [ {'gold': 300}, {'weapon': '์žฅ๊ฒ€'} ]

ํžˆ์–ด๋กœ 3

hero_3_name = '์šธ๋ฒ„๋ฆฐ' hero_3_health = 200 hero_3_damage = 50 hero_3_inventory = [ {'gold': 350}, {'weapon': 'ํด๋กœ'} ]

๋ชฌ์Šคํ„ฐ 1

monster_1_name = '๊ณ ๋ธ”๋ฆฐ' monster_1_health = 90 monster_1_damage = 30 monster_1_inventory = [ {'gold': 50}, {'weapon': '์ฐฝ'} ]

๋ชฌ์Šคํ„ฐ 2

monster_2_name = '๋“œ๋ž˜๊ณค' monster_2_health = 200 monster_2_damage = 80 monster_2_inventory = [ {'gold': 200}, {'weapon': 'ํ™”์—ผ'} ]

๋ชฌ์Šคํ„ฐ 3

monster_3_name = '๋ฑ€ํŒŒ์ด์–ด' monster_3_health = 80 monster_3_damage = 120 monster_3_inventory = [ {'gold': 1000}, {'weapon': '์ตœ๋ฉด์ˆ '} ] ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ”๋ด…๋‹ˆ๋‹ค. hero_name = ['์•„์ด์–ธ๋งจ', '๋ฐ๋“œํ’€', '์šธ๋ฒ„๋ฆฐ'] hero_health = [100, 300, 200] hero_damage = [200, 30, 50] hero_inventory = [ {'gold': 500,'weapon': '๋ ˆ์ด์ €'}, {'gold': 300, 'weapon': '์žฅ๊ฒ€'}, {'gold': 350, 'weapon': 'ํด๋กœ'} ] monster_name = ['๊ณ ๋ธ”๋ฆฐ', '๋“œ๋ž˜๊ณค', '๋ฑ€ํŒŒ์ด์–ด'] monster_health = [90, 200, 80] monster_damage = [30, 80, 120] monster_inventory = [ {'gold': 50,'weapon': '์ฐฝ'}, {'gold': 200, 'weapon': 'ํ™”์—ผ'}, {'gold': 1000, 'weapon': '์ตœ๋ฉด์ˆ '} ] ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๊ฐ€๋Šฅ์„ฑ๋“ค์„ ์‚ดํŽด๋ณด๊ฒŒ ๋œ๋‹ค๋ฉด import json hero_name = ['์•„์ด์–ธ๋งจ', '๋ฐ๋“œํ’€', '์šธ๋ฒ„๋ฆฐ'] hero_health = [100, 300, 200] hero_damage = [200, 30, 50] hero_inventory = [ {'gold': 500,'weapon': '๋ ˆ์ด์ €'}, {'gold': 300, 'weapon': '์žฅ๊ฒ€'}, {'gold': 350, 'weapon': 'ํด๋กœ'} ] monster_name = ['๊ณ ๋ธ”๋ฆฐ', '๋“œ๋ž˜๊ณค', '๋ฑ€ํŒŒ์ด์–ด'] monster_health = [90, 200, 80] monster_damage = [30, 80, 120] monster_inventory = [ {'gold': 50,'weapon': '์ฐฝ'}, {'gold': 200, 'weapon': 'ํ™”์—ผ'}, {'gold': 1000, 'weapon': '์ตœ๋ฉด์ˆ '} ]

ํžˆ์–ด๋กœ๊ฐ€ ์ฃฝ์œผ๋ฉด ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜

def hero_dies(hero_index): del hero_name[hero_index] del hero_health[hero_index] del hero_damage[hero_index] # <--- ์‹ค์ˆ˜๋กœ del hero_inventory[hero_index]ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด

hero_dies(0) print hero_name[0] print hero_health[0] print hero_damage[0] print json.dumps(hero_inventory[0], ensure_ascii=False) ์ €์žฅํ›„ ์‹คํ–‰์‹œ

๋ฐ๋“œํ’€ 300 30 {"weapon": "๋ ˆ์ด์ €", "gold": 500} ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ํžˆ์–ด๋กœ์˜ ์—๋„ˆ์ง€๊ฐ€ 0์ด ๋˜์–ด ์ฃฝ์—ˆ์„๋•Œ ํžˆ์–ด๋กœ๋ฅผ ๋ฆฌ์ŠคํŠธ์—์„œ ์ง€์šฐ๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ˆ˜๋กœ ์ฝ”๋“œ ํ•œ์ค„์„ ๋„ฃ์ง€ ์•Š์•˜๋‹ค๋ฉด "๋ฐ๋“œํ’€"์ด ์ฃฝ์€ "์•„์ด์–ธ๋งจ"์˜ ๋ ˆ์ด์ €๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ๋ฐ‘์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๊ฐ ํžˆ์–ด๋กœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ด์ฌ ์‚ฌ์ „์— ๋„ฃ์–ด ๋ฆฌ์ŠคํŠธ๋กœ ๋ฌถ์–ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. import json heroes = [ {'name': '์•„์ด์–ธ๋งจ', 'health': 100, 'damage': 200, 'inventory': {'gold': 500, 'weapon': '๋ ˆ์ด์ €'}}, {'name': '๋ฐ๋“œํ’€', 'health': 300, 'damage': 30, 'inventory': {'gold': 300, 'weapon': '์žฅ๊ฒ€'}}, {'name': '์šธ๋ฒ„๋ฆฐ', 'health': 200, 'damage': 50, 'inventory': {'gold': 350, 'weapon': 'ํด๋กœ'}} ] monsters = [ {'name': '๊ณ ๋ธ”๋ฆฐ', 'health': 90, 'damage': 30, 'inventory': {'gold': 50, 'weapon': '์ฐฝ'}}, {'name': '๋“œ๋ž˜๊ณค', 'health': 200, 'damage': 80, 'inventory': {'gold': 200, 'weapon': 'ํ™”์—ผ'}}, {'name': '๋ฑ€ํŒŒ์ด์–ด', 'health': 80, 'damage': 120, 'inventory': {'gold': 1000, 'weapon': '์ตœ๋ฉด์ˆ '}} ] print json.dumps(heroes, ensure_ascii=False) del heroes[0] print json.dumps(heroes, ensure_ascii=False) [{"inventory": {"weapon": "๋ ˆ์ด์ €", "gold": 500}, "health": 100, "name": "์•„์ด์–ธ๋งจ", "damage": 200}, {"inventory": {"weapon": "์žฅ๊ฒ€", "gold": 300}, "health": 300, "name": "๋ฐ๋“œํ’€", "damage": 30}, {"inventory": {"weapon": "ํด๋กœ", "gold": 350}, "health": 200, "name": "์šธ๋ฒ„๋ฆฐ", "damage": 50}] [{"inventory": {"weapon": "์žฅ๊ฒ€", "gold": 300}, "health": 300, "name": "๋ฐ๋“œํ’€", "damage": 30}, {"inventory": {"weapon": "ํด๋กœ", "gold": 350}, "health": 200, "name": "์šธ๋ฒ„๋ฆฐ", "damage": 50}] ๋งŒ์•ฝ ํžˆ์–ด๋กœ์˜ ์ธ๋ฒคํ† ๋ฆฌ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์•„์ดํ…œ์„ ๊ฐ€์ง„ ๊ฐ€๋ฐฉ์ด ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์‚ฌ์ „๊ณผ ๋ฆฌ์ŠคํŠธ๋Š” ์ค‘์ฒฉ์ด ๋˜๊ณ  ์ฝ”๋“œ๋Š” ๋”์šฑ ๋” ๋ณต์žกํ•ด์งˆ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. OOP๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ ํด๋ž˜์Šค๋Š” ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋งŒ๋“œ๋Š” ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ž€ ํ•œ๊ตญ๋ง๋กœ "์ฒญ์‚ฌ์ง„"์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ๊ฑด์ถ•๋ฌผ์ด๋‚˜ ์ž๋™์ฐจ๋ฅผ ์„ค๊ณ„ํ•œ ๋„๋ฉด์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ์˜ ๋ชจ๋ธ์„ ๋””์ž์ธํ•˜๊ณ  ์„ค๊ณ„ํ•œ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ™์€ ๋ชจ๋ธ์˜ ์ž๋™์ฐจ๋ฅผ ์›ํ•˜๋Š” ๋งŒํผ ์ฐ์–ด ๋‚ผ ์ˆ˜ ์žˆ๋Š”๊ฑฐ์ฃ . ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํด๋ž˜์Šค๋„ ๊ฐ™์€ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์œ„์˜ ํžˆ์–ด๋กœ์™€ ๋ชฌ์Šคํ„ฐ ๋˜ํ•œ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋…ผ๋ฆฌ์ ์ธ ์ง‘ํ•ฉ์œผ๋กœ ๋ฌถ์„ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

class Character(object): def init(self, name, health, damage, inventory): self.name = name self.health = health self.damage = damage self.inventory = inventory

def __repr__(self):
    return self.name

Character ํด๋ž˜์Šค์˜ ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ

heroes = [] heroes.append(Character('์•„์ด์–ธ๋งจ', 100, 200, {'gold': 500, 'weapon': '๋ ˆ์ด์ €'})) heroes.append(Character('๋ฐ๋“œํ’€', 300, 30, {'gold': 300, 'weapon': '์žฅ๊ฒ€'})) heroes.append(Character('์šธ๋ฒ„๋ฆฐ', 200, 50, {'gold': 350, 'weapon': 'ํด๋กœ'})) monsters = [] monsters.append(Character('๊ณ ๋ธ”๋ฆฐ', 90, 30, {'gold': 50, 'weapon': '์ฐฝ'})) monsters.append(Character('๋“œ๋ž˜๊ณค', 200, 80, {'gold': 200, 'weapon': 'ํ™”์—ผ'})) monsters.append(Character('๋ฑ€ํŒŒ์ด์–ด', 80, 120, {'gold': 1000, 'weapon': '์ตœ๋ฉด์ˆ '})) print heroes # ํžˆ์–ด๋กœ ๋ฆฌ์ŠคํŠธ ํ™•์ธ print monsters # ๋ชฌ์Šคํ„ฐ ๋ฆฌ์ŠคํŠธ ํ™•์ธ del heroes[0] # ํžˆ์–ด๋กœ ๋ฆฌ์ŠคํŠธ์—์„œ ์•„์ด์–ธ๋งจ ์‚ญ์ œ print heroes # ํžˆ์–ด๋กœ ๋ฆฌ์ŠคํŠธ ์žฌํ™•์ธ

[์•„์ด์–ธ๋งจ, ๋ฐ๋“œํ’€, ์šธ๋ฒ„๋ฆฐ] [๊ณ ๋ธ”๋ฆฐ, ๋“œ๋ž˜๊ณค, ๋ฑ€ํŒŒ์ด์–ด] [๋ฐ๋“œํ’€, ์šธ๋ฒ„๋ฆฐ] "Character"๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OOP๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค ์œ„ ์ž๋ฃŒ๋Š” http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-oop-part-1-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Doop%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80/ ์˜ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค ๋๋‚˜๊ณ  ์ˆ˜์ •ํ• ๊ฒŒ์š”