๐ ํ์ด์ฌ ๋งค์ง ๋ฉ์๋ ์๋ฒฝ ๊ฐ์ด๋ ๐ฉโจ

์๋ ํ์ธ์, ํ์ด์ฌ ๋ง๋ฒ์ฌ ์ฌ๋ฌ๋ถ! ์ค๋์ ์ ๋ง ์ ๊ธฐ๋ฐฉ๊ธฐํ ํ์ด์ฌ์ ๋น๋ฐ ๋ฌด๊ธฐ, ๋ฐ๋ก "๋งค์ง ๋ฉ์๋"์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ์ด ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ค ๋ณด๋ฉด ์ฌ๋ฌ๋ถ๋ ์ด๋์ ํ์ด์ฌ ๋ง๋ฒ์ฌ๊ฐ ๋์ด ์์ ๊ฑฐ์์. ใ ใ ใ ์ง์ง๋ฃจ์! ๐งโโ๏ธโจ
๋งค์ง ๋ฉ์๋๋ ํ์ด์ฌ์์ ํน๋ณํ ํ์ ๊ฐ์ง ๋ฉ์๋๋ค์ด์์. ์ด๋ฆ ์๋ค๋ก ๋๋ธ ์ธ๋์ค์ฝ์ด(__)๊ฐ ๋ถ์ด ์์ด์ "๋๋ ๋ฉ์๋"๋ผ๊ณ ๋ ๋ถ๋ฌ์. ์ด ๋ฉ์๋๋ค์ ์ฐ๋ฆฌ๊ฐ ์ง์ ํธ์ถํ์ง ์์๋ ํน์ ์ํฉ์์ ์๋์ผ๋ก ์คํ๋๋ ๋ง๋ฒ ๊ฐ์ ๋ ์๋ค์ด์ฃ !
์ด ๊ฐ์ด๋๋ฅผ ํตํด ์ฌ๋ฌ๋ถ์ ํ์ด์ฌ์ ๋งค์ง ๋ฉ์๋๋ฅผ ๋ง์คํฐํ๊ณ , ์ฝ๋๋ฅผ ๋์ฑ ํ์ด์ฌ์ค๋ฝ๊ฒ(Pythonic) ์์ฑํ ์ ์๊ฒ ๋ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ์ต๋ํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ ! ๐
๐ก Pro Tip: ๋งค์ง ๋ฉ์๋๋ฅผ ์ ํ์ฉํ๋ฉด ์ฌ๋ฌ๋ถ์ ์ฝ๋๊ฐ ๋ ์ฝ๊ธฐ ์ฝ๊ณ , ํจ์จ์ ์ด๋ฉฐ, ์ฐ์ํด์ง ๊ฑฐ์์. ๋ง์น ๋ง๋ฒ์ฒ๋ผ์! โจ
์, ๊ทธ๋ผ ์ด์ ํ์ด์ฌ์ ๋งค์ง ์ธ๊ณ๋ก ๋ ๋๋ณผ๊น์? ์์ ๋ฒจํธ ๊ฝ ๋งค์ธ์. ์ด ์ฌ์ ์ ์ฌ๋ฌ๋ถ์ ํ์ด์ฌ ์ค๋ ฅ์ ํ๊ป ๋์ด์ฌ๋ ค์ค ๊ฑฐ์์! ๐
๐ญ ๋งค์ง ๋ฉ์๋์ ๊ธฐ์ด: __init__์ __str__
์ฐ๋ฆฌ์ ๋งค์ง ์ฌํ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ๊ฐ๋ ฅํ ๋ ๋งค์ง ๋ฉ์๋๋ก ์์ํด๋ณผ๊ฒ์. ๋ฐ๋ก __init__
์ __str__
์ด์์. ์ด ๋์ ํ์ด์ฌ ํด๋์ค์ ๊ธฐ์ด๋ฅผ ์ด๋ฃจ๋ ์ค์ํ ๋
์๋ค์ด์ฃ !
๐ฉ __init__: ๊ฐ์ฒด์ ํ์ ๋ง๋ฒ
__init__
๋ฉ์๋๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ํน๋ณํ ๋ฉ์๋์์. ์ด ๋ฉ์๋๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ๊ฐ์ฒด์ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ ์ ์์ด์. ๋ง์น ์๊ธฐ๊ฐ ํ์ด๋ ๋ ์ด๋ฆ์ ์ง์ด์ฃผ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ !
class Magician:
def __init__(self, name, specialty):
self.name = name
self.specialty = specialty
harry = Magician("ํด๋ฆฌ", "์ฌ๋ผ์ง๊ธฐ")
hermione = Magician("ํค๋ฅด๋ฏธ์จ๋", "๋ณ์ ์ ")
์์ ์ฝ๋์์ __init__
๋ฉ์๋๋ ๋ง๋ฒ์ฌ์ ์ด๋ฆ๊ณผ ํน๊ธฐ๋ฅผ ์ค์ ํ๊ณ ์์ด์. ์ด๋ ๊ฒ ํ๋ฉด ์๋ก์ด Magician
๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋๋ง๋ค ์ด๋ฆ๊ณผ ํน๊ธฐ๋ฅผ ์ง์ ํ ์ ์์ฃ . ์์ ํธ๋ฆฌํ์ง ์๋์? ใ
ใ
๐ข __str__: ๊ฐ์ฒด์ ์๊ธฐ์๊ฐ ๋ง๋ฒ
__str__
๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ํํํ ๋ ์ฌ์ฉ๋ผ์. ์ด ๋ฉ์๋๋ฅผ ์ ์ํ๋ฉด print()
ํจ์๋ก ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ํํ๋ก ์ถ๋ ฅํ ์ ์์ด์. ๋ง์น ๋ง๋ฒ์ฌ๊ฐ ์๊ธฐ ์๊ฐ๋ฅผ ํ๋ ๊ฒ์ฒ๋ผ์!
class Magician:
def __init__(self, name, specialty):
self.name = name
self.specialty = specialty
def __str__(self):
return f"์๋
ํ์ธ์, ์ ๋ {self.specialty} ์ ๋ฌธ ๋ง๋ฒ์ฌ {self.name}์
๋๋ค!"
harry = Magician("ํด๋ฆฌ", "์ฌ๋ผ์ง๊ธฐ")
print(harry) # ์ถ๋ ฅ: ์๋
ํ์ธ์, ์ ๋ ์ฌ๋ผ์ง๊ธฐ ์ ๋ฌธ ๋ง๋ฒ์ฌ ํด๋ฆฌ์
๋๋ค!
์ด์ Magician
๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ฉด, ๊ทธ ๋ง๋ฒ์ฌ๊ฐ ์ง์ ์๊ธฐ์๊ฐ๋ฅผ ํ๋ ๊ฒ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ด์. ์์ ์ ๊ธฐํ์ง ์๋์? ๐
๐ ๋งค์ง ํ: __str__
๋ฉ์๋๋ ์ฌ์ฉ์ ์นํ์ ์ธ ์ถ๋ ฅ์ ์ํด ์ฌ์ฉ๋๊ณ , __repr__
๋ฉ์๋๋ ๊ฐ๋ฐ์ ์นํ์ ์ธ ์ถ๋ ฅ์ ์ํด ์ฌ์ฉ๋ผ์. ๋ ๋ค ์ ์ํ๋ ๊ฒ์ด ์ข์ ์ต๊ด์ด์์!
์ด ๋ ๋งค์ง ๋ฉ์๋๋ง ์ ํ์ฉํด๋ ์ฌ๋ฌ๋ถ์ ํด๋์ค๋ ํจ์ฌ ๋ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํด์ง ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ์ตํ๋ ๊ฒ์ฒ๋ผ, ์ด ๋งค์ง ๋ฉ์๋๋ค์ ์ตํ๋ฉด ์ฌ๋ฌ๋ถ์ ์ฝ๋ฉ ์ค๋ ฅ๋ ์ฅ์ฅ ๋์ด๋ ๊ฑฐ์์! ๐
๋ค์ ์น์ ์์๋ ๋ ํฅ๋ฏธ์ง์งํ ๋งค์ง ๋ฉ์๋๋ค์ ์์๋ณผ ๊ฑฐ์์. ์ค๋น๋์ จ๋์? Let's go! ๐โโ๏ธ๐จ
๐งฎ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ๋ง๋ฒ: __add__, __sub__, __mul__, __truediv__
์, ์ด์ ์ ๋ง ์ ๊ธฐํ ๋งค์ง ๋ฉ์๋๋ค์ ๋ง๋๋ณผ ์๊ฐ์ด์์! ์ด๋ฒ์๋ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ๊ณผ ๊ด๋ จ๋ ๋งค์ง ๋ฉ์๋๋ค์ ์์๋ณผ ๊ฑฐ์์. ์ด ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ค๋ ๊ธฐ๋ณธ ํ์ ์ฒ๋ผ ์ฐ์ฐ์ด ๊ฐ๋ฅํด์ ธ์. ์์ ๋๋ฐ ์๋์์? ใ ใ ใ
โ __add__: ๋ง์ ์ ๋ง๋ฒ
__add__
๋ฉ์๋๋ '+' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ ๋ํ๊ธฐ๊ฐ ๊ฐ๋ฅํด์ ธ์!
class MagicPotion:
def __init__(self, power):
self.power = power
def __add__(self, other):
return MagicPotion(self.power + other.power)
def __str__(self):
return f"๋ง๋ ฅ {self.power}์ ๋ฌผ์ฝ"
healing_potion = MagicPotion(50)
strength_potion = MagicPotion(30)
super_potion = healing_potion + strength_potion
print(super_potion) # ์ถ๋ ฅ: ๋ง๋ ฅ 80์ ๋ฌผ์ฝ
์ฐ์! ์ด์ ๋ง๋ฒ ๋ฌผ์ฝ๋ค์ ๋ํ ์ ์๊ฒ ๋์์ด์. ์์ ์ ๊ธฐํ์ง ์๋์? ๐ฒ
โ __sub__: ๋บ์ ์ ๋ง๋ฒ
__sub__
๋ฉ์๋๋ '-' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ผ๋ฆฌ ๋นผ๊ธฐ๋ ํ ์ ์์ด์!
class MagicPower:
def __init__(self, level):
self.level = level
def __sub__(self, other):
return MagicPower(max(0, self.level - other.level))
def __str__(self):
return f"๋ง๋ฒ ๋ ๋ฒจ {self.level}"
wizard_power = MagicPower(100)
spell_cost = MagicPower(30)
remaining_power = wizard_power - spell_cost
print(remaining_power) # ์ถ๋ ฅ: ๋ง๋ฒ ๋ ๋ฒจ 70
์ด์ ๋ง๋ฒ์ฌ์ ํ์์ ์ฃผ๋ฌธ ์ฌ์ฉ ๋น์ฉ์ ๋บ ์ ์๊ฒ ๋์์ด์. ๋ง๋ฒ ์ธ๊ณ๊ฐ ์ ์ ํ์ค์ด ๋๊ณ ์์ด์! ๐งโโ๏ธโจ
โ๏ธ __mul__: ๊ณฑ์ ์ ๋ง๋ฒ
__mul__
๋ฉ์๋๋ '*' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ณต์ ํ ์ ์์ด์!
class MagicCookie:
def __init__(self, flavor):
self.flavor = flavor
def __mul__(self, number):
return [MagicCookie(self.flavor) for _ in range(number)]
def __str__(self):
return f"{self.flavor} ๋ง ๋ง๋ฒ ์ฟ ํค"
chocolate_cookie = MagicCookie("์ด์ฝ")
cookie_batch = chocolate_cookie * 3
print([str(cookie) for cookie in cookie_batch]) # ์ถ๋ ฅ: ['์ด์ฝ ๋ง ๋ง๋ฒ ์ฟ ํค', '์ด์ฝ ๋ง ๋ง๋ฒ ์ฟ ํค', '์ด์ฝ ๋ง ๋ง๋ฒ ์ฟ ํค']
์์ฐ! ์ด์ ๋ง๋ฒ์ ์ฟ ํค๋ฅผ ์ํ๋ ๋งํผ ๋ณต์ ํ ์ ์์ด์. ์ฟ ํค ํํฐ ์ด์ด๋ณผ๊น์? ๐ช๐
โ __truediv__: ๋๋์ ์ ๋ง๋ฒ
__truediv__
๋ฉ์๋๋ '/' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋๋ ์ ์์ด์!
class MagicCake:
def __init__(self, size):
self.size = size
def __truediv__(self, number):
return MagicCake(self.size / number)
def __str__(self):
return f"ํฌ๊ธฐ {self.size}์ ๋ง๋ฒ ์ผ์ดํฌ"
big_cake = MagicCake(100)
small_cake = big_cake / 4
print(small_cake) # ์ถ๋ ฅ: ํฌ๊ธฐ 25.0์ ๋ง๋ฒ ์ผ์ดํฌ
์ด์ ๋ง๋ฒ์ ์ผ์ดํฌ๋ฅผ ์ํ๋ ๋งํผ ๋๋ ์ ์์ด์. ๊ณตํํ๊ฒ ๋๋ ๋จน์ ์ ์๊ฒ ๋ค์! ๐ฐ
๐ ๋งค์ง ํ: ์ด๋ฐ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ๋ฉ์๋๋ค์ ์ฌ์ฉํ ๋๋ ํญ์ ํ์
์ฒดํฌ๋ฅผ ํด์ฃผ๋ ๊ฒ์ด ์ข์์. ์๋ฅผ ๋ค์ด, isinstance(other, MagicPotion)
๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฐ์ฐ ๋์์ด ์ฌ๋ฐ๋ฅธ ํ์
์ธ์ง ํ์ธํ๋ ๊ฑฐ์ฃ !
์ด๋ ๊ฒ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ์ฌ์ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ค๋ ๋ง์น ๊ธฐ๋ณธ ํ์ ์ฒ๋ผ ์์ฐ์ค๋ฝ๊ฒ ์ฐ์ฐํ ์ ์์ด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ์ฝ๋๋ ๋์ฑ ์ง๊ด์ ์ด๊ณ ํ์ด์ฌ์ค๋ฌ์์ก์ด์! ๐
์ฌ๋ฌ๋ถ๋ ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ฌ์ฉํด์ ์์ ๋ง์ ๋ง๋ฒ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด๋ ๊ฑด ์ด๋จ๊น์? ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ๋ฐฐ์ฐ๋ฏ, ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ตํ๋ฉด ์ฌ๋ฌ๋ถ์ ํ์ด์ฌ ์ค๋ ฅ์ ํ๋์ ์ฐ๋ฅผ ๊ฑฐ์์! ๐
๋ค์ ์น์ ์์๋ ๋ ํฅ๋ฏธ์ง์งํ ๋งค์ง ๋ฉ์๋๋ค์ ์์๋ณผ ๊ฑฐ์์. ๊ณ์ ๋ฐ๋ผ์ค์ธ์! ๐โโ๏ธ๐จ
๐ฎ ๋น๊ต์ ๋ง๋ฒ: __eq__, __lt__, __gt__
์, ์ด์ ์ฐ๋ฆฌ์ ๋งค์ง ์ฌํ์ ๋น๊ต์ ์ธ๊ณ๋ก ๋ค์ด๊ฐ๋ณผ ๊ฑฐ์์! ์ด๋ฒ์ ์์๋ณผ ๋งค์ง ๋ฉ์๋๋ค์ ๊ฐ์ฒด๋ค์ ์๋ก ๋น๊ตํ ์ ์๊ฒ ํด์ฃผ๋ ๋ง๋ฒ ๊ฐ์ ๋ ์๋ค์ด์์. ์ด ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ค๋ ๋์ ๋น๊ต๋ ๋๋ฑ ๋น๊ต๊ฐ ๊ฐ๋ฅํด์ ธ์. ์์ ์ ๊ธฐ๋ฐฉ๊ธฐํ์ง ์๋์? ใ ใ ใ
๐ญ __eq__: ๋๋ฑ ๋น๊ต์ ๋ง๋ฒ
__eq__
๋ฉ์๋๋ '==' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ค์ด ์๋ก ๊ฐ์์ง ๋น๊ตํ ์ ์์ด์!
class MagicWand:
def __init__(self, wood, core):
self.wood = wood
self.core = core
def __eq__(self, other):
if not isinstance(other, MagicWand):
return NotImplemented
return self.wood == other.wood and self.core == other.core
def __str__(self):
return f"{self.wood} ๋๋ฌด์ {self.core} ์ฌ์ ๋ง๋ฒ ์งํก์ด"
harry_wand = MagicWand("ํธ๋๊ฐ์๋๋ฌด", "๋ถ์ฌ์กฐ ๊นํธ")
voldemort_wand = MagicWand("์ฃผ๋ชฉ๋๋ฌด", "๋ถ์ฌ์กฐ ๊นํธ")
another_harry_wand = MagicWand("ํธ๋๊ฐ์๋๋ฌด", "๋ถ์ฌ์กฐ ๊นํธ")
print(harry_wand == voldemort_wand) # ์ถ๋ ฅ: False
print(harry_wand == another_harry_wand) # ์ถ๋ ฅ: True
์ฐ์! ์ด์ ๋ง๋ฒ ์งํก์ด๋ค์ด ์๋ก ๊ฐ์์ง ๋น๊ตํ ์ ์๊ฒ ๋์์ด์. ํด๋ฆฌ์ ์งํก์ด์ ๋ณผ๋๋ชจํธ์ ์งํก์ด๊ฐ ๋ค๋ฅด๋ค๋ ๊ฑธ ์ฝ๋๋ก ํ์ธํ ์ ์๋ค์! ๐ฒ
โฌ๏ธ __lt__: '์๋ค'์ ๋ง๋ฒ
__lt__
๋ฉ์๋๋ '<' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ค ์ฌ์ด์ ์์๋ฅผ ์ ํ ์ ์์ด์!
class MagicPower:
def __init__(self, level):
self.level = level
def __lt__(self, other):
if not isinstance(other, MagicPower):
return NotImplemented
return self.level < other.level
def __str__(self):
return f"๋ง๋ฒ ๋ ๋ฒจ {self.level}"
harry_power = MagicPower(80)
hermione_power = MagicPower(95)
print(harry_power < hermione_power) # ์ถ๋ ฅ: True
print(hermione_power < harry_power) # ์ถ๋ ฅ: False
์ด์ ๋ง๋ฒ์ฌ๋ค์ ํ์ ๋น๊ตํ ์ ์๊ฒ ๋์์ด์. ํค๋ฅด๋ฏธ์จ๋๊ฐ ํด๋ฆฌ๋ณด๋ค ๊ฐํ๋ค๋ ๊ฑธ ์ฝ๋๋ก ํ์ธํ ์ ์๋ค์! ์ญ์ ๊ณต๋ถ๋ฅผ ์ด์ฌํ ํ ๋๋ถ์ธ๊ฐ ๋ด์. ใ ใ ๐งโโ๏ธ๐ช
โฌ๏ธ __gt__: 'ํฌ๋ค'์ ๋ง๋ฒ
__gt__
๋ฉ์๋๋ '>' ์ฐ์ฐ์์ ๋์์ ์ ์ํด์. ์ด๊ฑด __lt__
์ ๋ฐ๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ์!
class MagicPotion:
def __init__(self, power):
self.power = power
def __gt__(self, other):
if not isinstance(other, MagicPotion):
return NotImplemented
return self.power > other.power
def __str__(self):
return f"ํจ๋ฅ {self.power}์ ๋ง๋ฒ ๋ฌผ์ฝ"
healing_potion = MagicPotion(50)
strength_potion = MagicPotion(70)
print(healing_potion > strength_potion) # ์ถ๋ ฅ: False
print(strength_potion > healing_potion) # ์ถ๋ ฅ: True
์์ฐ! ์ด์ ๋ง๋ฒ ๋ฌผ์ฝ๋ค์ ํจ๋ฅ์ ๋น๊ตํ ์ ์๊ฒ ๋์์ด์. ํ ์ฆ๊ฐ ๋ฌผ์ฝ์ด ์น์ ๋ฌผ์ฝ๋ณด๋ค ๋ ๊ฐ๋ ฅํ๋ค๋ ๊ฑธ ์ ์ ์๋ค์! ๐ช๐งช
๐ ๋งค์ง ํ: __lt__
์ __eq__
๋ง ๊ตฌํํด๋ ํ์ด์ฌ์ ์๋์ผ๋ก ๋ค๋ฅธ ๋น๊ต ์ฐ์ฐ์๋ค(<=
, >
, >=
, !=
)์ ๋์์ ์ ์ถํ ์ ์์ด์. ํ์ง๋ง ๋ช
์์ ์ผ๋ก ๋ชจ๋ ๋น๊ต ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ๋ ์์ ํ๊ณ ๋ช
ํํด์!
์ด๋ ๊ฒ ๋น๊ต ์ฐ์ฐ์๋ค์ ์ค๋ฒ๋ก๋ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ค๋ ๋ง์น ์ซ์๋ ๋ฌธ์์ด์ฒ๋ผ ์์ฐ์ค๋ฝ๊ฒ ๋น๊ตํ ์ ์์ด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ์ฝ๋๋ ๋์ฑ ์ง๊ด์ ์ด๊ณ ํ์ด์ฌ์ค๋ฌ์์ก์ด์! ๐
์ฌ๋ฌ๋ถ๋ ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ฌ์ฉํด์ ์์ ๋ง์ ๋ง๋ฒ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด๋ ๊ฑด ์ด๋จ๊น์? ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ๋ฐฐ์ฐ๋ฏ, ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ตํ๋ฉด ์ฌ๋ฌ๋ถ์ ํ์ด์ฌ ์ค๋ ฅ์ ํ๋์ ์ฐ๋ฅผ ๊ฑฐ์์! ๐
๋ค์ ์น์ ์์๋ ๋์ฑ ํฅ๋ฏธ์ง์งํ ๋งค์ง ๋ฉ์๋๋ค์ ์์๋ณผ ๊ฑฐ์์. ๊ณ์ ๋ฐ๋ผ์ค์ธ์! ์ฐ๋ฆฌ์ ๋งค์ง ์ฌํ์ ์์ง ๋๋์ง ์์์ด์! ๐งโโ๏ธโจ
๐ญ ์ปจํ ์ด๋์ ๋ง๋ฒ: __len__, __getitem__, __setitem__, __iter__
์, ์ด์ ์ฐ๋ฆฌ์ ๋งค์ง ์ฌํ์ ๋์ฑ ๊น์ด ๋ค์ด๊ฐ๋ณผ ๊ฑฐ์์! ์ด๋ฒ์ ์์๋ณผ ๋งค์ง ๋ฉ์๋๋ค์ ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ์ปจํ ์ด๋์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ด๊ฐ๋ ฅ ๋ง๋ฒ๋ค์ด์์. ์ด ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ ๋ฆฌ์คํธ๋ ๋์ ๋๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ด์. ์์ ๋๋ฐ์ด์ฃ ? ใ ใ ใ
๐ __len__: ๊ธธ์ด์ ๋ง๋ฒ
__len__
๋ฉ์๋๋ len()
ํจ์๊ฐ ํธ์ถ๋ ๋์ ๋์์ ์ ์ํด์. ์ด ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ์ฐ๋ฆฌ์ ๊ฐ์ฒด์ '๊ธธ์ด'๋ฅผ ์ ์ํ ์ ์์ด์!
class MagicBag:
def __init__(self):
self.items = []
def add_item(self, item):
self.items.append(item)
def __len__(self):
return len(self.items)
def __str__(self):
return f"๋ง๋ฒ ๊ฐ๋ฐฉ (์์ดํ
์: {len(self)})"
hermione_bag = MagicBag()
hermione_bag.add_item("๋ง๋ฒ์")
hermione_bag.add_item("์๊ฐ ํ์ ์")
hermione_bag.add_item("๊ณ ์์ด ํฌ๋ฃฉ์ํฌ")
print(len(hermione_bag)) # ์ถ๋ ฅ: 3
print(hermione_bag) # ์ถ๋ ฅ: ๋ง๋ฒ ๊ฐ๋ฐฉ (์์ดํ
์: 3)
์ฐ์! ์ด์ ํค๋ฅด๋ฏธ์จ๋์ ๋ง๋ฒ ๊ฐ๋ฐฉ์ ๋ช ๊ฐ์ ์์ดํ ์ด ๋ค์ด์๋์ง ์ฝ๊ฒ ์ ์ ์์ด์. ์ญ์ ํค๋ฅด๋ฏธ์จ๋, ๊ฐ๋ฐฉ ์์ ์จ๊ฐ ๊ฒ๋ค์ ๋ค ๋ฃ๊ณ ๋ค๋๋๊ตฌ๋! ๐
๐ __getitem__: ์ ๊ทผ์ ๋ง๋ฒ
__getitem__
๋ฉ์๋๋ ๋๊ดํธ([])๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด์ ์์์ ์ ๊ทผํ ๋์ ๋์์ ์ ์ํด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌ์คํธ๋ ๋์
๋๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ด์!
class SpellBook:
def __init__(self):
self.spells = {}
def add_spell(self, name, description):
self.spells[name] = description
def __getitem__(self, spell_name):
return self.spells[spell_name]
def __str__(self):
return f"๋ง๋ฒ์ (์ฃผ๋ฌธ ์: {len(self.spells)})"
harry_spellbook = SpellBook()
harry_spellbook.add_spell("์ต์คํ ๋ฆฌ์๋ฅด๋ฌด์ค", "์๋๋ฐฉ์ ์งํก์ด๋ฅผ ๋นผ์๋ ์ฃผ๋ฌธ")
harry_spellbook.add_spell("์์คํํ ํจํธ๋ก๋", "๋๋ฉํฐ๋ฅผ ๋ฌผ๋ฆฌ์น๋ ์ฃผ๋ฌธ")
print(harry_spellbook["์ต์คํ ๋ฆฌ์๋ฅด๋ฌด์ค"]) # ์ถ๋ ฅ: ์๋๋ฐฉ์ ์งํก์ด๋ฅผ ๋นผ์๋ ์ฃผ๋ฌธ
print(harry_spellbook) # ์ถ๋ ฅ: ๋ง๋ฒ์ (์ฃผ๋ฌธ ์: 2)
๋๋ฐ! ์ด์ ํด๋ฆฌ์ ๋ง๋ฒ์์์ ์ํ๋ ์ฃผ๋ฌธ์ ์ฝ๊ฒ ์ฐพ์๋ณผ ์ ์์ด์. ๋ง์น ์ง์ง ๋ง๋ฒ์๋ฅผ ํผ์ณ๋ณด๋ ๊ฒ ๊ฐ์ง ์๋์? โจ๐
โ๏ธ __setitem__: ์์ ์ ๋ง๋ฒ
__setitem__
๋ฉ์๋๋ ๋๊ดํธ([])๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด์ ์์๋ฅผ ์ค์ ํ ๋์ ๋์์ ์ ์ํด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋ง์น ๋์
๋๋ฆฌ์ฒ๋ผ ์์ ํ ์ ์์ด์!
class PotionCabinet:
def __init__(self):
self.potions = {}
def __setitem__(self, name, quantity):
self.potions[name] = quantity
def __getitem__(self, name):
return self.potions[name]
def __str__(self):
return f"๋ฌผ์ฝ ์บ๋น๋ (์ข
๋ฅ: {len(self.potions)})"
snape_cabinet = PotionCabinet()
snape_cabinet["์ฌ๋์ ๋ฌ์ฝ"] = 5
snape_cabinet["ํด๋ฆฌ์ฃผ์ค ๋ง๋ฒ์ฝ"] = 3
print(snape_cabinet["์ฌ๋์ ๋ฌ์ฝ"]) # ์ถ๋ ฅ: 5
snape_cabinet["์ฌ๋์ ๋ฌ์ฝ"] = 4
print(snape_cabinet["์ฌ๋์ ๋ฌ์ฝ"]) # ์ถ๋ ฅ: 4
print(snape_cabinet) # ์ถ๋ ฅ: ๋ฌผ์ฝ ์บ๋น๋ (์ข
๋ฅ: 2)
์์ฐ! ์ด์ ์ค๋ค์ดํ ๊ต์์ ๋ฌผ์ฝ ์บ๋น๋์ ๋ง์๋๋ก ๊ด๋ฆฌํ ์ ์์ด์. ๊ทผ๋ฐ ์ฌ๋์ ๋ฌ์ฝ์ด ์ ์ด๋ ๊ฒ ๋ง์ ๊ฑฐ์ฃ ? ์ค๋ค์ดํ ๊ต์๋... ํน์... ๐ค๐
๐ __iter__: ์ํ์ ๋ง๋ฒ
__iter__
๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ ์ํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค์. ์ด ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ์ฐ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ for
๋ฃจํ์์ ์ฌ์ฉํ ์ ์์ด์!
class MagicDrawer:
def __init__(self):
self.items = []
def add_item(self, item):
self.items.append(item)
def __iter__(self):
return iter(self.items)
def __str__(self):
return f"๋ง๋ฒ ์๋ (์์ดํ
์: {len(self.items)})"
ron_drawer = MagicDrawer() ron_drawer.add_item("๋ถ์์ง ์งํก์ด")
ron_drawer.add_item("์ด์ฝ๋ฆฟ ๊ฐ๊ตฌ๋ฆฌ ์นด๋")
ron_drawer.add_item("๋ง๋ฃฌ ์ค์จํฐ")
for item in ron_drawer:
print(f"์๋ ์ ์์ดํ
: {item}")
print(ron_drawer) # ์ถ๋ ฅ: ๋ง๋ฒ ์๋ (์์ดํ
์: 3)
๋๋ฐ! ์ด์ ๋ก ์ ๋ง๋ฒ ์๋ ์ ์์ดํ ๋ค์ ํ๋์ฉ ๊บผ๋ด๋ณผ ์ ์์ด์. ๋ก ๋ต๊ฒ ๋ถ์์ง ์งํก์ด๊น์ง ์๋ค์. ใ ใ ใ ๐งโโ๏ธ
๐ ๋งค์ง ํ: __iter__
๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด list()
, tuple()
๊ฐ์ ํจ์๋ค๋ ์ฐ๋ฆฌ์ ๊ฐ์ฒด์ ์ฌ์ฉํ ์ ์์ด์. ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ฐ๋ฆฌ์ ์ปค์คํ
๊ฐ์ฒด๋ฅผ ํ์ด์ฌ์ ๋ด์ฅ ํจ์๋ค๊ณผ ๋ ์ ์ด์ธ๋ฆฌ๊ฒ ๋ง๋ค ์ ์์ฃ !
์ด๋ ๊ฒ ์ปจํ ์ด๋ ๊ด๋ จ ๋งค์ง ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ค๋ ๋ง์น ํ์ด์ฌ์ ๋ด์ฅ ์๋ฃ๊ตฌ์กฐ์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค ์ ์์ด์. ์ด๊ฑธ๋ก ์ฐ๋ฆฌ์ ์ฝ๋๋ ๋์ฑ ํ์ด์ฌ์ค๋ฝ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์์ก์ด์! ๐
์ฌ๋ฌ๋ถ๋ ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ฌ์ฉํด์ ์์ ๋ง์ ๋ง๋ฒ ์ปจํ ์ด๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด๋ ๊ฑด ์ด๋จ๊น์? ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ๋ฐฐ์ฐ๋ฏ, ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ตํ๋ฉด ์ฌ๋ฌ๋ถ์ ํ์ด์ฌ ์ค๋ ฅ์ ๋ง๋ฒ์ฌ ์์ค์ผ๋ก ์ฌ๋ผ๊ฐ ๊ฑฐ์์! ๐งโโ๏ธโจ
์ฐ๋ฆฌ์ ๋งค์ง ๋ฉ์๋ ์ฌํ์ด ๊ฑฐ์ ๋๋๊ฐ๊ณ ์์ด์. ๋ง์ง๋ง ์น์ ์์๋ ์ด ๋ชจ๋ ๊ฒ์ ์ข ํฉํด์ ํ๋์ ๋ฉ์ง ์์ ๋ฅผ ๋ง๋ค์ด๋ณผ ๊ฑฐ์์. ์ค๋น๋์ จ๋์? Let's go! ๐
๐ญ ๋งค์ง ๋ฉ์๋์ ๋ํฅ์ฐ: ํธ๊ทธ์ํธ ๋ง๋ฒ ํ๊ต
์, ์ด์ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด ๋ชจ๋ ๋งค์ง ๋ฉ์๋๋ค์ ์ด๋์ํด์ ๋ฉ์ง ์์ ๋ฅผ ๋ง๋ค์ด๋ณผ ๊ฑฐ์์. ํธ๊ทธ์ํธ ๋ง๋ฒ ํ๊ต๋ฅผ ํ์ด์ฌ์ผ๋ก ๊ตฌํํด๋ณผ๊น์? ์ด ์์ ๋ฅผ ํตํด ๋งค์ง ๋ฉ์๋๋ค์ด ์ผ๋ง๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฉํ์ง ์ง์ ์ฒดํํด๋ณด์ธ์! ๐ฐโจ
class MagicStudent:
def __init__(self, name, house):
self.name = name
self.house = house
self.spells = []
def __str__(self):
return f"{self.name} ({self.house}์ ํ์)"
def __len__(self):
return len(self.spells)
def __getitem__(self, index):
return self.spells[index]
def learn_spell(self, spell):
self.spells.append(spell)
class Hogwarts:
def __init__(self):
self.students = []
def __len__(self):
return len(self.students)
def __getitem__(self, index):
return self.students[index]
def __iter__(self):
return iter(self.students)
def __add__(self, student):
if isinstance(student, MagicStudent):
self.students.append(student)
return self
def __str__(self):
return f"ํธ๊ทธ์ํธ ๋ง๋ฒ ํ๊ต (ํ์ ์: {len(self)})"
# ํธ๊ทธ์ํธ ๋ง๋ฒ ํ๊ต ์์ฑ
hogwarts = Hogwarts()
# ํ์๋ค ์์ฑ ๋ฐ ์
ํ
harry = MagicStudent("ํด๋ฆฌ ํฌํฐ", "๊ทธ๋ฆฌํ๋๋ฅด")
hermione = MagicStudent("ํค๋ฅด๋ฏธ์จ๋ ๊ทธ๋ ์ธ์ ", "๊ทธ๋ฆฌํ๋๋ฅด")
draco = MagicStudent("๋๋ ์ด์ฝ ๋งํฌ์ด", "์ฌ๋ฆฌ๋ฐ๋ฆฐ")
hogwarts + harry + hermione + draco
# ํ์๋ค์๊ฒ ๋ง๋ฒ ๊ฐ๋ฅด์น๊ธฐ
harry.learn_spell("์ต์คํ ๋ฆฌ์๋ฅด๋ฌด์ค")
harry.learn_spell("์์คํํ ํจํธ๋ก๋")
hermione.learn_spell("์๊ฐ๋ฅด๋์ ๋ ๋น์ค์ฌ")
draco.learn_spell("์ฌํ๋ผ ์ผํ๋ผ")
# ํธ๊ทธ์ํธ ์ ๋ณด ์ถ๋ ฅ
print(hogwarts)
# ํ์๋ค ์ ๋ณด ์ถ๋ ฅ
for student in hogwarts:
print(f"{student} - ์ต๋ํ ๋ง๋ฒ ์: {len(student)}")
for spell in student:
print(f" - {spell}")
# ํน์ ํ์์ ํน์ ๋ง๋ฒ ํ์ธ
print(f"{harry}์ ๋ ๋ฒ์งธ ๋ง๋ฒ: {harry[1]}")
์์ฐ! ์ด์ ์ฐ๋ฆฌ๋ง์ ์์ ํธ๊ทธ์ํธ ๋ง๋ฒ ํ๊ต๊ฐ ์์ฑ๋์์ด์. ์ด ์์ ์์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋งค์ง ๋ฉ์๋๋ค์ ์ฌ์ฉํ์ด์:
__init__
: ๊ฐ์ฒด ์ด๊ธฐํ__str__
: ๋ฌธ์์ด ํํ__len__
: ๊ธธ์ด ์ ์__getitem__
: ์ธ๋ฑ์ฑ ์ง์__iter__
: ๋ฐ๋ณต ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ__add__
: ๋ง์ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ
์ด ๋งค์ง ๋ฉ์๋๋ค ๋๋ถ์ ์ฐ๋ฆฌ์ ์ฝ๋๋ ๋งค์ฐ ์ง๊ด์ ์ด๊ณ ํ์ด์ฌ์ค๋ฌ์์ก์ด์. ํ์๋ค์ ์ถ๊ฐํ๊ณ , ๋ง๋ฒ์ ๊ฐ๋ฅด์น๊ณ , ์ ๋ณด๋ฅผ ํ์ธํ๋ ๊ณผ์ ์ด ๋ง์น ์ค์ ๋ก ํธ๊ทธ์ํธ๋ฅผ ์ด์ํ๋ ๊ฒ์ฒ๋ผ ์์ฐ์ค๋ฝ์ฃ ! ๐งโโ๏ธโจ
๐ ๋งค์ง ํ: ์ค์ ํ๋ก์ ํธ์์๋ ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ๋์ฑ ์ธ์ฌํ๊ฒ ๊ตฌํํด์ผ ํด์. ์๋ฅผ ๋ค์ด, ํ์ ์ฒดํฌ๋ ์์ธ ์ฒ๋ฆฌ ๋ฑ์ ์ถ๊ฐํ๋ฉด ๋์ฑ ์์ ์ ์ธ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ฃ !
์ฌ๋ฌ๋ถ๋ ์ด๋ฐ ์์ผ๋ก ๋งค์ง ๋ฉ์๋๋ค์ ํ์ฉํด์ ์์ ๋ง์ ๋ง๋ฒ ์ธ๊ณ๋ฅผ ๋ง๋ค์ด๋ณด๋ ๊ฑด ์ด๋จ๊น์? ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ๋ฐฐ์ฐ๋ฏ, ์ด๋ฐ ๋งค์ง ๋ฉ์๋๋ค์ ์ตํ๊ณ ํ์ฉํ๋ฉด ์ฌ๋ฌ๋ถ์ ํ์ด์ฌ ์ค๋ ฅ์ ๋ค๋ธ๋์ด ๊ต์๋ ์์ค์ผ๋ก ์ฌ๋ผ๊ฐ ๊ฑฐ์์! ๐งโโ๏ธ๐
์ด๋ ๊ฒ ํด์ ์ฐ๋ฆฌ์ ํ์ด์ฌ ๋งค์ง ๋ฉ์๋ ์ฌํ์ด ๋๋ฌ์ด์. ์ฌ๋ฌ๋ถ์ ์ด์ ํ์ด์ฌ์ ๊ฐ๋ ฅํ ๋ง๋ฒ์ฌ๊ฐ ๋์์ด์! ์ด ์ง์์ ํ์ฉํด ๋์ฑ ๋ฉ์ง ์ฝ๋๋ฅผ ์์ฑํ์ธ์. ์ฌ๋ฌ๋ถ์ ์ฝ๋ฉ ์ฌ์ ์ ํ์ด์ด ํจ๊ปํ๊ธฐ๋ฅผ! ๐โจ
- ์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ฌ๋ฅ๋ท์ ์ต์ AI ๊ธฐ์ ๊ณผ ๋ฒ๋ฅ ์ ๊ธฐ๋ฐํ์ฌ ์์ฌ์ ์ง์ ์ฌ์ฐ๊ถ์ ์ ๊ทน์ ์ผ๋ก ๋ณดํธํ๋ฉฐ,
๋ฌด๋จ ์ฌ์ฉ ๋ฐ ์นจํด ํ์์ ๋ํด ๋ฒ์ ๋์์ ํ ๊ถ๋ฆฌ๋ฅผ ๋ณด์ ํฉ๋๋ค.
ยฉ 2025 ์ฌ๋ฅ๋ท | All rights reserved.
๋๊ธ 0๊ฐ