๐ํ์ด์ฌ ํด๋์ค ์ด์ ๋ฆฌ
๐ํ์ด์ฌ ํด๋์ค
๋ช ๋ฌ ์ ์ ํ์ด์ฌ ํด๋์ค๋ฅผ ์ ๋ฆฌํ์ง๋ง ๊ทธ๋๋ณด๋ค ์ดํด์ ํญ์ด ๋ ๋์ด์ก๊ณ ์ค๋ช ๋ ๋ ์์ธํ๊ฒ ํ ์ ์์ด์ ํด๋ ์ค์ ๋ํด์ ๋ค์ ์ ๋ฆฌํ๋ค.
๐ํด๋์ค ์์ฑ
class Idol_member(object):
def __init__(self, name, group, gender, age, agency):
self._name = name
self._group = group
self._gender = gender
self._age = age
self._agency = agency
def __str__(self):
return f'์ด๋ฆ: {self._name}'
def __repr__(self):
return f'๊ทธ๋ฃน๋ช
: {self._group}'
-
ํ์ด์ฌ์์ ํด๋์ค๋ฅผ ์์ฑํ๋ฉด object๋ฅผ ์๋์ผ๋ก ์์ํ๋ค.
- ๊ดํธ ์์ object๋ ์๋ต ๊ฐ๋ฅํ๋ค.
- ๊ดํธ ์์ object๋ ์๋ต ๊ฐ๋ฅํ๋ค.
-
__init__
๋ฉ์๋๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.- ex.
idol_member1 = Idol_member('์์ฐ๋ฏผ', '์์', '๋จ์', 32, 'SM์ํฐํ ์ธ๋จผํธ')
idol_member1๋ณ์์ Idol_memberํด๋์ค์ ์ธ์๋ฅผ ๋ฃ์ด์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค.
- ex.
-
์์ฑํ ์ธ์คํด์ค๋ฅผ ํ๋ฆฐํธํด๋ณด์
print(idol_member1)
->์ด๋ฆ: ์์ฐ๋ฏผ
-
__str__
๋ฉ์๋๋ฅผ ๊ตฌํํ์ง ์์ผ๋ฉด
<__main__.Idol_member object at 0x7f8ba8110fd0>
-> ๊ฐ์ฒด๊ฐ ๋ฆฌํด๋๋ค.
__str__
๋ฉ์๋๋ ํด๋์ค๋ฅผ ์กฐํ ํ ๋ ํ์ ๋๋ ์ ๋ณด๋ฅผ ๊ตฌํํ๋ค.
์ฅ๊ณ ๋ชจ๋ธ์์ ์ฌ์ฉ ํ๋ฉด ๋ชจ๋ธ ๊ฐ์ฒด ์ด๋ฆ ๋์ ํํํ ๊ฒ์ ๊ตฌํ ํ ์ ์๋ค.
__repr__
๋ฉ์๋๋__str__
๋ฉ์๋๊ฐ ์์ผ๋ฉด ํธ์ถ๋๋ค.
repr(idol_member)
์ด๋ฐ์์ผ๋ก ํธ์ถ ํ ์๋ ์๋ค.
๐ํด๋์ค ๋ณ์์ ์ธ์คํด์ค ๋ณ์
- ์์ด๋ ๋ฉค๋ฒ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด์.
class Idol_member(object):
"""
Idol_member class
Aythor : sdk
Date : 210705
"""
# ํด๋์ค ๋ณ์
member_count = 0
def __init__(self, name, group, gender, age, agency, song=None):
# ์ธ์คํด์ค ๋ณ์
self._name = name
self._group = group
self._gender = gender
self._age = age
self._agency = agency
self._song = song
Idol_member.member_count +=1
def __str__(self):
return f'str: {self._name}'
def __repr__(self):
return f'repr : {self._group}'
def detail_info(self):
print(f'Current Id: {id(self)}')
print(f'Member Detail Info : {self._name} {self._group} {self._gender}')
def __del__(self):
Idol_member.member_count -= 1
-
๋ฉค๋ฒ์ ์ด๋ฆ๊ณผ ๊ทธ๋ฃน๋ช ์ฑ๋ณ ๋์ด ์์์ฌ ๋ ธ๋๋ฅผ ์ธ์๋ก ๋ฐ๋ ํด๋์ค์ด๋ค.
-
ํด๋์ค ๋ณ์ membercount๋ฅผ ์ ์ธํ๋ค.
- ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๋ง๋ค membercount๋ณ์๊ฐ 1์ฉ ์ฆ๊ฐํ๋ค.
-
์ธ์คํด์ค๋ฅผ ์์ฑํด์ฃผ์
member1 = Idol_member('์นด์ด', '์์', 'male', 28, 'SM์ํฐํ
์ธ๋จผํธ')
member2 = Idol_member('์ฌ๊ธฐ', '๋ ๋๋ฒจ๋ฒณ', 'female', 28, 'SM์ํฐํ
์ธ๋จผํธ', 'psycho')
- ๋ฉ์๋์ ์ ๊ทผํ ๋๋ ์ธ์คํด์ค์ '.' ์ ์ฐ๊ณ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
member1.detail_info()
# Current Id: 140248082366416
# Member Detail Info : ์นด์ด ์์ male
member2.detail_info()
# Current Id: 140248082366368
# Member Detail Info : ์ฌ๊ธฐ ๋ ๋๋ฒจ๋ฒณ female
-
์๋ฌ
Idol_member.detail_info()
-> ์๋ฌ
ํด๋์ค์๋ค๊ฐ ๋ฐ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์๋ฌ๊ฐ๋๋ค. ์ฐธ์กฐํ ๊ฐ์ฒด๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฝ๊ฒ ๋งํด Idol_member๋ ํด๋์ค๋ฅผ ์ฐ์ด๋ด๋ ํ์ด์ง ์ฐ์ด๋ธ ๊ฒฐ๊ณผ๋ฌผ์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ self์ ์๋ฏธ๋ ๊ฐ์ฒด์ ์ธ์คํด์ค ๊ทธ ์์ฒด๋ค. -
์ธ์คํด์ค๋ณ์์ ์ ๊ทผ
member2._name = '์ฌ๊ธฐ2
์ด๋ ๊ฒ ์ธ์คํด์ค ๋ณ์์ ๋ฐ๋ก ์ ๊ทผํ ์ ์์ง๋ง ๊ถ์ฅ๋์ง๋ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
print(member2._name) -> ์ฌ๊ธฐ2
- ํด๋์ค ๋ณ์ ์ ๊ทผ
print(member1.member_count) -> 2
print(member2.member_count) -> 2
print(Idol_member.member_count) -> 2
ํด๋์ค ๋ณ์๋ ๋ชจ๋ ์ธ์คํด์ค์์ ์ ๊ทผํ ์ ์๋ค.
ํด๋์ค ํ์์๋ ์ ๊ทผํ ์ ์๋ค.
โญ๏ธํด๋์ค ๋ฉ์๋, ์ธ์คํด์ค ๋ฉ์๋, ์คํ ํฑ ๋ฉ์๋
์ธ์คํด์ค ๋ฉ์๋
class exo_member(object):
'''
Idol_member
Author : sdk
Date : 210705
'''
#class ๋ณ์
korea_album_count = 21
def __init__(self, realname, nickname, age, ability, solo_album=0):
self._realname = realname
self._nickname = nickname
self._age = age
self._ability = ability
self._solo_album = solo_album
# instance method
def names(self):
return f'{self._realname} : {self._nickname}'
def detail_info(self):
return f'Member Detail Info : {self._realname} {self._nickname} {self._age} ๋ฅ๋ ฅ : {self._ability} ์๋ก์จ๋ฒ ๊ฐ์: {self._solo_album}'
def get_solo_album_count(self):
return f'{self._nickname}์ ์๋ก์จ๋ฒ ๊ฐ์ : {self._solo_album}'
def get_all_album_count(self):
return f'{self._nickname}์ ์๋ก์จ๋ฒ ๊ฐ์ + ๊ทธ๋ฃน ์๋ฒ ๊ฐ์ : {self._solo_album + exo_member.korea_album_count}'
def __str__(self):
return f'{self.detail_info()}'
-
exo๋ฉค๋ฒ๋ค์ ์ ๋ณด๋ฅผ ๋ฐ๋ ํด๋์ค๋ฅผ ์์ฑํ๋ค.
-
ํด๋์ค ๋ณ์
korea_album_count
๋ 2020๋ ๊น์ง ์์๊ฐ ํ๊ตญ์์ ๋ฐ๋งคํ ์จ๋ฒ์ ์๋์ ๋ํ๋ธ๋ค. -
๊ทธ์ธ ์ด๋ฆ์ ์ถ๋ ฅํ๋ names, ์์ธํ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ detail_info ๋ฉค๋ฒ๋ณ ์๋ก์จ๋ฒ ๋ฐ๋งค์๋ฅผ ์ถ๋ ฅํ๋ get_solo_album_countํจ์๋ฑ์ ์ธ์คํด์ค ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ธ์คํด์ค ๋ฉ์๋๋ ์ธ์๋กself๊ฐ ๊ผญ ์์ด์ผํ๋ค.
๊ฐ์ฒด์์ ์ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ
- ์ธ์คํด์ค ๋ฉ์๋๋ ์ธ์๋กself๊ฐ ๊ผญ ์์ด์ผํ๋ค.
ํด๋์ค ๋ฉ์๋
-
ํด๋์ค ๋ณ์์ ์ ๊ทผํ๋ ค๋ฉด
exo_member.korea_album_count = 22
์ด๋ ๊ฒ ์ ๊ทผํ ์ ์์ง๋ง ํด๋์ค ๋ณ์์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ ๊ถ์ฅ๋์ง ์๋๋ค.(pep8) -
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํด๋์ค ๋ฉ์๋๋ฅผ ์ธ ์ ์๋ค.
-
๊ธฐ์กด exo_memberํด๋์ค์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐ ํด์ค๋ค.
@classmethod
def raise_album_count(cls, count):
if count < 1:
print('1 ์ด์์ ์ถ๊ฐํด์ฃผ์ธ์.')
return
cls.korea_album_count += count
print('์จ๋ฒ ๊ฐ์ ์ถ๊ฐ๊ฐ ๋ฐ์๋์ต๋๋ค.')
-
์ด๋ ๊ฒ ํ๋ฉด ํด๋์ค์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
-
์ธ์๋ก ๋ฐ๋ cls๋ ํด๋์ค ์์ฒด ์ฆ
exo_member
์ด๋ค. -
2021๋ ๊ธฐ์ค์ผ๋ก ์์์ ํ๊ตญ ์จ๋ฒ ๋ฐ๋งค ๊ฐ์๋ 22๊ฐ์ด๋ฏ๋ก 1๊ฐ๋ฅผ ์ถ๊ฐํด๋ณด์.
exo_member.raise_album_count(1)
-
๋ณ๊ฒฝ์ฌํญ์ ์ถ๋ ฅํด๋ณด์
print(member1.get_all_album_count())
# -> ์์ฐ๋ฏผ์ ์๋ก์จ๋ฒ ๊ฐ์ + ๊ทธ๋ฃน ์๋ฒ ๊ฐ์ : 22
- ์ธ์คํด์ค ์์ฑ๋ ํด๋์ค ๋ฉ์๋๋ฅผ ํ ์ฉํด์ ํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
@classmethod
def add_member(cls, realname, nickname, age, ability, solo_album=0):
return cls(realname, nickname, age, ability, solo_album)
- ๊ธฐ์กด์๋ ์ด๋ ๊ฒ ์ ์ ํ๋ค๋ฉด
member1 = exo_member('๊น๋ฏผ์', '์์ฐ๋ฏผ',32, '๊ฒฐ๋น')
- ์ด๋ ๊ฒ ์ ์ํ๋ฉด ์ด๋ฐ์์ผ๋ก ์ธ์คํด์ค๋ฅผ ์์ฑ ํ ์ ์๋ค.
ember4 = exo_member.add_member('๋๊ฒฝ์', '๋์ค', 30, 'ํ')
member5 = exo_member.add_member('๊น์ข
์ธ', '์นด์ด', 28, '์๊ฐ์ด๋', 1)
- ์ฅ๊ณ ์์ ์ด๋ฐ ํด๋์ค ๋ฉ์๋๋ฅผ ์ด ๊ฒ์ ์์ฃผ ๋ณผ ์ ์๋ค.
์คํ ํฑ ๋ฉ์๋
- ๋ฉค๋ฒ๋ค์ ์๋ก์จ๋ฒ ์ ๋ฌด๋ฅผ ์๋ ค์ฃผ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํด๋ณด์
์คํ ํฑ ๋ฉ์๋ ๋ฏธ์ฌ์ฉ์
def is_solo(inst):
if inst._solo_album > 0:
return f'{inst._nickname}์ ์๋ก์จ๋ฒ์ {inst._solo_album}์ฅ ๋ฐ๋งค ํ์ต๋๋ค.'
return f'{inst._nickname}์ ์๋ก์จ๋ฒ์ ๋ฐ๋งคํ์ง ์์์ต๋๋ค.'
-
ํด๋์ค ๋ฐ์์ ์ ์ธํด์ ์ธ ์ ์๋ค.
-
์ถ๋ ฅ ํด๋ณด๋ฉด
print(is_solo(member1))
# -> ์์ฐ๋ฏผ์ ์๋ก์จ๋ฒ์ ๋ฐ๋งคํ์ง ์์์ต๋๋ค.
์ด๋ ๊ฒ ์จ๋ ๋์ง๋ง ํด๋์ค์ ์ฐ๊ฒฐ๋์ด ์๋ ๋๋์ด๋ ํด๋์ค์์ ์ง์ด ๋ฃ์ด๋ณด์.
์คํ ํฑ ๋ฉ์๋ ์ฌ์ฉ์
@staticmethod
def is_solo(inst):
if inst._solo_album > 0:
return f'{inst._nickname}์ ์๋ก์จ๋ฒ์ {inst._solo_album}์ฅ ๋ฐ๋งค ํ์ต๋๋ค.'
return f'{inst._nickname}์ ์๋ก์จ๋ฒ์ ๋ฐ๋งคํ์ง ์์์ต๋๋ค.'
- staticmethod๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ๋ฌ์์ ํจ์๋ฅผ ์ ์ํ๋ฉด self๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.
- ์ถ๋ ฅํด๋ณด์
print(exo_member.is_solo(member3))
-> ๋ฐฑํ์ ์๋ก์จ๋ฒ์ 4์ฅ ๋ฐ๋งค ํ์ต๋๋ค.
- ํด๋ ์ค์ ์ง์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ธ์คํด์ค๋ฅผ ์ธ์๋ก ๋๊ธธ ์ ์๋ค.
- ์ธ์คํด์ค๋ก๋ ์ ๊ทผํ ์ ์๋ค.
print(member4.is_solo(member4))
-> ๋์ค์ ์๋ก์จ๋ฒ์ ๋ฐ๋งคํ์ง ์์์ต๋๋ค.
- ์์ฆ์ staticmethod๊ฐ ๊ตณ์ด ํ์ํ์ง ์๋ค๋ ์๊ฒฌ์ด ๋ง๋ค๊ณ ํ๋ค.
- ํด๋์ค ๋ฉ์๋๋ก ๊ตฌํํ ์ ์๊ณ ์ธ์คํด์ค ๋ฉ์๋๋ก๋ ๊ตฌํํ ์ ์๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ํ์ด์ฌ ํด๋์ค ์ด์ ๋ฆฌ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@sdk1926/ํ์ด์ฌ-ํด๋์ค-์ด์ ๋ฆฌ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค