1. ๊ฐ์ฒด
๐ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์ ์๋ ์ค์ ๋๋ ๋ฌธ์์ด ๋ฑ ๊ธฐ๋ณธ์ ์ธ ์๋ฃํ์ผ๋ก ํํํ๊ธฐ ํ๋ ๊ฒ๋ค์ด ์กด์ฌ
โก๏ธ ์๋ฅผ ๋ค์ด ์ด๋ค ๊ฒ์๊ธ์ ํ์ด์ฌ์ผ๋ก ํํ์ ํ๋ค๋ฉด [๊ฒ์๊ธ ๋ฒํธ, ์ ๋ชฉ, ์์ฑ์, ๋น๋ฐ๋ฒํธ, ๋ด์ฉ, ์ต์ด์์ฑ์ผ์, ์ต์ข
์์ ์ผ์, ์กฐํ์]๊ฐ ํ์ํ๋ฐ ์ด๋ฅผ ์์ฝ๊ฒ ๊ด๋ฆฌ ํ๋ ค๋ฉด 8๊ฐ์ ํญ๋ชฉ์ ํ๋์ ์ด๋ฆ์ ๊ฐ์ง ๊ฐ์ฒด object๋ก ๋ง๋ค์ด์ ์ฌ์ฉ
2. ํด๋์ค
๐ ํด๋์ค class๋ฅผ ํ ๋ง๋๋ก ์ ์ํ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋๊ตฌ
๐ ํ๋์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋๋ฉด ๊ทธ ํด๋์ค๋ฅผ ํตํด์ (๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง) ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ ์๋ค
โก๏ธ ๊ฐ์ ํด๋์ค๋ก ๋ง๋ ๊ฐ์ฒด๋ผ ํ๋๋ผ๋ ๊ฐ์ฒด๋ค์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง์ ์์
โก๏ธ ์ธ์คํด์ค instance ์ญ์ ํด๋์ค๋ฅผ ์ด์ฉํด์ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๋ ์ฉ์ด
๐ก ๊ฐ์ฒด์ ์ธ์คํด์ค์ ๋ฏธ๋ฌํ ์ฐจ์ด
a. ์ํ๋จธ์ ํด๋์ค๋ก ๋ง๋ ์ํ์ ๊ฐ์ฒด object
b. ์ํ์ ์ํ๋จธ์ ํด๋์ค์ ์ธ์คํด์ค instance
1) ํด๋์ค์ ๊ตฌ์ฑ
๐พ ํด๋์ค์ ๊ธฐ๋ณธ ๊ตฌ์ฑ
- ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๋ ํด๋์ค๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ ๊ฐ๊ณผ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ด์ผ ํจ
โถ๏ธ ๊ฐ์ ๋ณ์, ๊ธฐ๋ฅ์ ํจ์
- ํด๋์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ณ์๋ a. ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๋ชจ๋ ์ธ์คํด์ค๋ค์ด ๊ณต์ ํ๋ ๋ณ์์ธ 'ํด๋์ค ๋ณ์'์
b. ๋ชจ๋ ์ธ์คํด์ค๋ค์ด ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ง๋ ๋ณ์์ธ '์ธ์คํด์ค ๋ณ์'๋ก ๋ถ๋ฆฌ๋จ
- ํด๋์ค๋ฅผ ๊ตฌ์ฑํ๋ ํจ์๋ ๋ฉ์๋ method๋ผ๊ณ ํ๊ณ
a) ํด๋์ค ๋ฉ์๋ b) ์ ์ ๋ฉ์๋ c) ์ธ์คํด์ค ๋ฉ์๋๋ก ๋ถ๋ฆฌ
2) ํด๋์ค ์ ์๋ฐฉ๋ฒ
๐พ class ํค์๋๋ก ํด๋์ค๋ฅผ ์ ์
๐พ ํด๋์ค ์ด๋ฆ์ Upper Camel Case ๊ท์น์ ๋ฐ๋ฆ
๐พ ํ์ด์ฌ์ ๋ณ์๋ ํจ์์ ์ด๋ฆ์ ๋ค์ด๋ฐํ ๋ ์ธ๋๋ฐ(_)๋ฅผ ์ด์ฉํด ๋จ์ด๋ฅผ ์ฐ๊ฒฐํ๋ Snake Case ๋ฐฉ์์ ์ฌ์ฉํ์ง๋ง
ํด๋์ค๋ Upper Camel Case ๊ท์น์ ๋ฐ๋ฆ
ex. print + member : printmember 1) print_member 2) printMember 3) PrintMember
# ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ ์
class ํด๋์ค :
๋ณธ๋ฌธ
3. ๊ฐ์ฒด ์์ฑ
# ํด๋์ค๊ฐ ์ ์๋์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑ
๊ฐ์ฒด = ํด๋์ค()
# 2๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด
๊ฐ์ฒด1 = ํด๋์ค()
๊ฐ์ฒด2 = ํด๋์ค()
# ํด๋์ค ์ ์์ ๊ฐ์ฒด ์์ฑ
class WaffleMachine : # WaffleMachine์ด๋ผ๋ ํด๋์ค ์ ์
pass # ๋ด๋ถ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ ๋ ์ฐ์
waffle1 = WaffleMachine() # WaffleMachine ์ด๋ผ๋ ํด๋์ค๋ฅผ ์ด์ฉํด waffle์ด๋ผ๋ ๊ฐ์ฒด ์์ฑ
waffle2 = WaffleMachine()
print(waffle1) # <__main__.WaffleMachine object at 0x102beee60>
# ๋ฉ๋ชจ๋ฆฌ์ 0x102beee60๋ฒ์ง์ ์ ์ฅ๋ WaffleMachine์ ๊ฐ์ฒด๋ผ๋ ์๋ฏธ
print(waffle2)
4. ์ธ์คํด์ค ๋ณ์์ ์ธ์คํด์ค ๋ฉ์๋
๐ ์ธ์คํด์ค ๋ณ์๋ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง๋ ๋ชจ๋ ์ธ์คํด์ค๋ค์ด ๊ฐ๊ฐ ๋ฐ๋ก ์ ์ฅํ๋ ๋ณ์
โก๏ธ ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ self๋ผ๋ ํค์๋๋ฅผ ์์ ๋ถ์ฌ์ค
๐ ์ธ์คํด์ค ๋ฉ์๋๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฉ์๋
โก๏ธ ์ธ์คํด์ค ๋ฉ์๋๋ ๋ฐ๋์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก self๋ฅผ ์ถ๊ฐํด์ผ ํจ
class Person : # Person ํด๋์ค๋ฅผ ์ ์
# ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๊ฐ self์ด๋ฏ๋ก ์ธ์คํด์ค ๋ฉ์๋
# ๋ชจ๋ ์ธ์คํด์ค๋ who_am_i() ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์
# ๋งค๊ฐ๋ณ์ self์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ธ์คํด์ค๊ฐ ์ ๋ฌ
# self๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋งค๊ฐ๋ณ์์ ์ค์ ๋ก ์ฌ์ฉ๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ
def who_am_i(self, name, age, tel, address):
# ์ธ์คํด์ค ๋ณ์ = ๋งค๊ฐ๋ณ์. ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ ์ต์ด์ ๊ฐ์ด ๋์
๋๋ ์์ ์ ์์์ ์์ฑ.
self.name = name
self.age = age
self.tel = tel
self.address = address
boy = Person() # ์ธ์คํด์ค boy๊ฐ ์์ฑ. ํด๋์ค์ ์์ฑ์๊ฐ ํธ์ถ
#print(boy.name) # 'Person' object has no attribute 'name'
boy.who_am_i('john', 15, '123-1234', 'toronto') #์ธ์คํด์ค ๋ฉ์๋ ํธ์ถ
print(boy.name) # john
print(boy.age) # 15
print(boy.tel) # 123-1234
print(boy.address) # toronto
# ํด๋์ค์ ์๋ ์์ฑ๋ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํจ. ๋ค๋ฅธ ์ธ์ด์ ๊ฐ์ฒด์๋ ๋ค๋ฅธ ๋ฐฉ์.
boy.email = 'test@test.com'
print(boy.email) # test@test.com
5. ์์ฑ์ constructor
๐ ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์ ํจ์๋ฅผ ์์ฑ์๋ผ๊ณ ํ๋ค.
๐ ๊ฐ์ ๊ฐ์ง ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ฑ์๋ฅผ ์ด์ฉ
๐ ์์ฑ์๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ํน๋ณํ ๋ฉ์๋
โก๏ธ ๋ชจ๋ ํด๋์ค๋ __init__() ์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํจ์๋ฅผ ๊ฐ์ง๊ณ ์์
โก๏ธ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค ๋ณ์์ ์ด๊ธฐํ ์ฉ๋๋ก ์ฌ์ฉ
class Candy:
def __init__(self, shape, color):
print('์คํ์ด ๋ ๊น?')
self.shape = shape
self.color = color
satang = Candy('circle', 'brown')
print(satang.color)
# ์คํ์ด ๋ ๊น?
# brown
6. ์๋ฉธ์ destructor
๐ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ์์ฑ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ์คํด์ค๊ฐ ์๋ฉธ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋
๐ ์๋ฉธ์๋ __del__()
class Sample:
def __del__(self):
print('์ธ์คํด์ค๊ฐ ์๋ฉธ๋ฉ๋๋ค')
sample = Sample()
del sample # ์ธ์คํด์ค๊ฐ ์๋ฉธ๋ฉ๋๋ค
# ๋งค์ง ๋ฉ์๋ ์ํ
class Sample:
def __int__(self):
pass
def __len__(self):
return 6
def __str__(self):
return 'what?'
li = [1, 2, 3]
print(len(li)) # 3
sample = Sample()
print(len(sample)) # 6
print(sample) # what?
7. ๋ฉ์๋ method
๐ ํด๋์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ํจ์๋ฅผ ๋งํ๋ค.
๐ ํ์ด์ฌ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ฉค๋ฒ ํจ์(member funcion) ํน์ ์ธ์คํด์ค ํจ์(instance function) ๋ฑ์ ์ฉ์ด๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํจ
class ํด๋์ค ์ด๋ฆ:
def ๋ฉ์๋ ์ด๋ฆ(self, ์ถ๊ฐ์ ์ธ ๋งค๊ฐ๋ณ์):
pass
[ ๋ด์ฉ ์ฐธ๊ณ : IT ํ์ ๊ฐ์ ๋ฐ ์ฑ 'ํผ์ ๊ณต๋ถํ๋ ํ์ด์ฌ' ]