3์ฃผ์ฐจ ๊ฐ์๋ ๋ฉํ๋ฐ์ดํฐ ( + Descriptor ) ๋ฅผ ๋ค๋ฃจ์๋ค. ์ ๋ง ๊ทน๊ฐ์ ๋์ด๋์๋ค..
๊ฐ์ฌ๋์ ๋ง์์ ๋ถ๋ช ๋ค์๋๋ฐ, ๊ทธ๋๋ก ํ์ชฝ ๊ท๋ก ๋น ์ ธ๋๊ฐ์ ๋ช๋ฒ์ ๋๋ ค๋ดค๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๐คฏ๊ฐ์ฌ๋๊ป์๋ ๋ฉํ ํด๋์ค๋ฅผ ๋๋์ฒด ์ ๋ฐฐ์ฐ๋ ๊ฒ์ธ์ง ์ ์ ์์๋ ๋๊ฐ ์์ผ์ จ๊ณ , ์ค์ ๋ก ๋ฉํ ํด๋์ค์ ๋ํ ๊ฐ๋ ์ ์ตํ๋ ์๊ฐ์ด ๊ฝค ์ค๋ ๊ฑธ๋ฆฌ์ จ๋ค๊ณ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๊ฐ๋ ์ ๋ํด์ ๋ฐฐ์ฐ๊ณ ๋์ ์ง์ ์ฝ๋ฉ์ ํ๋ฉด์ ํ์ด์ฌ์ ๋ํ ํจ์ฌ ๊น์ ์ดํด๋ฅผ ํ ์ ์๊ฒ ๋์๊ณ , ๋ค๋ฅธ ์ธ์ด๋ฅผ ๋ฐฐ์ธ ๋๋ ์ดํด๋ ฅ์ด ํญ ๋๊ฒ ์ฆ๊ฐํ๋ค๊ณ ํ๋ค.
3์ฃผ์ฐจ ๊ฐ์๋ฅผ ๋ง์น ๋์ ์๊ฐ๋ ๊ฐ๋ค!
๊ฐ๋ ๋ง ์ตํ์ ๋ฟ์ธ๋ฐ, ์ด์ ๋ค๋ฅธ ์คํ ์์ค์ ์ฝ๋๊ฐ ์กฐ๊ธ์ ์ฝํ๋ค.
๋งค์ง ๋ฉ์๋๋ ๋ ์ด์ ๋๋ ต์ง ์๋ค ๐ฅณ
1. ํด๋์ค๋ฅผ ๋ง๋๋ ์ญํ ์ ํ๋ค.
๋ด๊ฐ ์๋ํ๋ ๋ฐฉํฅ์ผ๋ก ํด๋์ค๋ฅผ ์ปค์คํ (โญ๏ธ)ํ๊ฒ ๋ค.
์ฆ, ๊ตฌํ ๋ ๋ฒจ์ ๊ฐ์ ์ด ๊ฐ๋ฅํ๋ค.2. ํ๋ ์์ํฌ ์์ฑ ์ ํ์๋ก ์์๋์ด์ผ ํ๋ค.
Spring, Flux, MSA, tensorflow, pytorch, Django ๋ฑ ๋ง์ ์คํ์์ค ํ๋ ์์ํฌ์์
๋ฉํ ํด๋์ค๋ก ์ ๊ทผํด์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์๋ค.
์ด๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ํ์ ํ๊ธฐ ์ํด์ ๋ฐ๋์ ๋ฉํ ํด๋์ค๋ฅผ ์์์ผํ๋ค.
1. ์ปค์คํ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐฉํฅ์ผ๋ก ํ๋ฌ๊ฐ๊ณ ์๋์ง ๊ฒ์ฆํ ์ ์๊ฒ ๋๋ค.
2. ์๊ฒฉํ ํด๋์ค๋ฅผ ์ฌ์ฉ ์๊ตฌํ ๋ ์ฐ์ธ๋ค.
๋ผ๋๋ฅผ ๋ฉํ ํด๋์ค๋ก ํํํ๊ฒ ๋ง๋ค์ด ๋๊ณ , ์คํ ์์ค๋ก ์ปค์คํฐ๋ง์ด์ฆ ํ๋ ๋ฐฉํฅ์ผ๋ก ์ฐ์ธ๋ค.
Django๋ DB์ ํด๋์ค๋ฅผ 1:1๋ก ๋งคํํ๊ธฐ ๋๋ฌธ์ ์๊ฒฉํ๋ค.
type ํจ์๊ฐ ๋์ ์์ฑ๊ณผ ์ปค์คํ ํด๋์ค ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
ํน์ ์ธ์คํด์ค์ ์๋ฃํ์ ์ถ๋ ฅํจ๊ณผ ๋๋ถ์ด, ๋ฉํ ํด๋์ค๋ฅผ ์์ฑํ ์ ์๋ค.
class SamlpleA():
pass
obj1 = SamlpleA()
print('ex 1>',obj1.__class__)
# <class '__main__.SamlpleA'>
# obj1์ ์ํ์ sampleA๋ผ๊ณ ์๋ ค์ค๋ค.
print('ex 1>',type(obj1))
# obj1์ ํ์
๋ํ '<class __main__.SamlpleA'> ์ด๋ค.
type ๐ฌ
"๋ ์ด๋์์ ๋ง๋ค์ด์ก์ด?"
- ์ธ์คํด์ค๊ฐ ์ด๋์์ ๋ง๋ค์ด์ก๋์ง ์ถ๋ ฅํด์ค๋ค.
class SampleA
๋ก ๋ง๋ค์ด์ง ์ธ์คํด์ค obj1
์ type์ '<class __main__.SamlpleA'>
์ด๋ค.
โญ๏ธ ๊ทธ๋ ๋ค๋ฉด class SampleA
๋ ๋๊ตฌ๋ก๋ถํฐ
๋ง๋ค์ด์ง๊ฑธ๊น?
obj1.__class__
๋ SampleA ์ด๋ฏ๋ก,
obj1.__class__.__class__
๋ก ์ ์ ์์ ๊ฒ์ด๋ค.
print('ex 1>',obj1.__class__.__class__)
# <class 'type'>
๋ ์ฉ? ๋ฌ๊ธ์์ด type
์ด ์ถ๋ ฅ๋์๋ค.
์ฌ์ค ํ์ด์ฌ์์ ๋ชจ๋ ํด๋์ค์ ๋ฉํ ํด๋์ค๋
type
์ด๋ค.
type์ด ๋ชจ๋ ํด๋์ค์ ์ํ ์ธ ๊ฒ์ด๋ค. ๐ฎ
โญ๏ธ ๊ทธ๋ ๋ค๋ฉด type์ ๋๊ตฌ๋ก๋ถํฐ ๋ง๋ค์ด์ก์๊น?
print('ex 1>',obj1.__class__.__class__)
# ex 1> <class 'type'>
print('ex 1>',type(obj1).__class__)
# ex 1> <class 'type'>
print('ex 1>',type.__class__)
# ex 1> <class 'type'>
๋๋๊ฒ๋ type์ ์๊ธฐ ์์ ์ด ๋ฉํ๋ค.
์ด๋ฏธ ํ์ด์ฌ ์ธ์ด ์์ฒด์ ์ ์๋ ๋ด์ฉ์ด๊ธฐ ๋๋ฌธ์, type์ ๋ํ ๋ฉํ๋ ๊ฐ์
ํ ์๊ฐ ์๋ค!
๊ทธ๋ ์ง๋ง ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฉํ ํด๋์ค๋ ์ธ์ ๋ ๊ฐ์
๊ฐ๋ฅํ๋ฏ๋ก ๋ด ์
๋ง๋๋ก ์ปค์คํ
ํด๋ณด์~!
ํต์ฌ ์ ๋ฆฌ โญ๏ธ
obj1
=SampleA's instance
SampleA
=type meta class
type
=type meta class
- ๋ชจ๋ ํด๋์ค์ ๋ฉํ๋ type์ด๋ค.
- type์ ์๊ธฐ์์ ์ด ๋ฉํ์ด๋ค.
๊ทธ๋์ type์ ๋ํ ๋ฉํ๋ ๊ฐ์ ํ ์ ์๋ค.
[์ถ์ฒ]