๋ฌธ์ ์ค๋ช
:
์ผ๋ถ ๋ณ์์ ํจ์๋ฅผ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๊ณ ํน์ ์คํฌ๋ฆฝํธ์ ๋ํด ๋ก์ปฌ์ผ ์ ์๋ ๊ฒฝ์ฐ ๋ ๋์ ์ฝ๋ ๊ตฌ์กฐ์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด์ฉ๋ฉด ์ด๊ฒ์ ๋ํ ์๋ก์ด ํค์๋๋ฅผ ์๊ฐํ๊ณ ์์ต๋๊น? ์๋๋ฉด ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์ง๊ธ ๊ฐ๋ฅํ๊ฐ์?
๋ณ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ setget
๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฌด ๊ฒ๋ ํ์ง ์๊ฑฐ๋ ๊ฒฝ๊ณ ๋ฅผ ์ถ๋ ฅํ๋ ํจ์๋ก ์ด๋๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ์๋์, ์ง์ ํ ๊ฐ์ธ ๋ณ์๋ ํจ์๋ ์์ต๋๋ค.
@YeldhamDev ์ฌํ๊ฒ๋ setget
๊ฐ ๋์์ด ๋์ง๋ง ๊ณต๊ณต ์ฌ์ฐ์ ๋ณด๊ณ ์ถ์ง ์๋ค๋ฉด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. @reduz ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
ํ์ด์ฌ์์๋ ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ์ด์ค ์ ํ ๋ฐ์ค์กฐ์ฐจ๋ ๋ณ์์ ์ก์ธ์คํ๊ณ ์์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ์ง ์์ต๋๋ค. Python์์๋ ๋์ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค. ๋ณ์๊ฐ private์์ ๋ํ๋ด๋ ์ ํ ๋ฐ์ค ํ๋, ์์์์ ๋ํ๋ด๋ ALL_CAPS... ์ด๋์์๋ ์ฌ์ ํ ์ก์ธ์คํ ์ ์์ง๋ง ์ค์ ๋ก๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
@NathanLovato ์ด ๊ฒฝ์ฐ GDScript๋ Python๊ณผ ๋ฌ๋ผ์ผ ํฉ๋๊น?
@Chaosus ๋น๊ณต๊ฐ ๋ณ์๊ฐ ํ์ํ ์ด์ ๋ฅผ ์ค๋ช ํ๋ ์ธ์๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋๊ตฐ๊ฐ๊ฐ ์ด ์์ ์ ์ํํ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์์ต๋๋ค.
๊ฐ์ธ ๋ณ์๋ ๋ฐ์ดํฐ๋ฅผ ์บก์ํํ๊ณ ๋ค๋ฅธ ํด๋์ค์์ ๊ฒฐํฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ค๋ฅธ ํด๋์ค๊ฐ ์ด๋ฌํ ๋ณ์์ ์ก์ธ์คํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์ฒ์์ ์ก์ธ์คํ์ง ์์ผ๋ฉด ๋ฌธ์ ๋ ํด๊ฒฐ๋ฉ๋๋ค.
private ํค์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ท์น์ ์ฌ์ฉํ์ฌ ์์ฑํ๋ ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ณ์๋ฅผ ๋น๊ณต๊ฐ๋ก ๋ง๋๋ ์๊ธฐ์ ๋ฐฉ๋ฒ, ๋ณ์์ ์ก์ธ์คํ ์ ์๋ ์๊ธฐ์ ๋ฐฉ๋ฒ์ ๋ฐฐ์์ผ ํฉ๋๋ค. ๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์์์ํค์ง ์๊ณ ๋ด๋ถ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก ํด๋์ค๋ฅผ ๋์์ธํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ด ์ฝ๋ ์ํคํ ์ฒ์ ๊ด๋ จํ์ฌ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ์์ธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Python๊ณผ ๊ด๋ จํ์ฌ ์๋ฐฑ๋ง ๋ช ์ Python ๊ฐ๋ฐ์์๊ฒ ์ ํฉํฉ๋๋ค. ์ง์ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๋ ๋ณ์๋ฅผ "๋น๊ณต๊ฐ"๋ก ๋ง๋๋ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉฐ ๊ฐ๋จํฉ๋๋ค. ํ๋ ๋์ ๋ ๊ฐ์ ์ ํ ๋ฐ์ค์ ์์ฑํฉ๋๋ค. ํ์ง๋ง ์์ง ์ฌ์ฉํ๋ ์ฌ๋์ ๋ณธ ์ ์ด ์์ต๋๋ค. ์ต๊ทผ๊น์ง JS์์ ์ฌ์ฉํ ์ ์์์ต๋๋ค. ์๋ง ๊ทธ๋ฐ ์ธ์ด๊ฐ ๋ ์์ ๊ฒ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด GDscript์ ์์ด์๋ ์ ๋๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ๊ธฐ๋ฅ์ ์ ์ฌ์ฉํ๋ค๋ฉด ๋๋ ์ ๋ง๋ก ์๊ดํ์ง ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ทธ๋ ๊ฒ ์ ์ฉํ๋ค๊ณ ํ์ ํ์ง ๋ชปํฉ๋๋ค. ์๋ฅผ ๋ค์ด Godot๋ ์๋ ์์ฑ์์ ์ ํ _ ๋๋ 2๊ฐ ์๋ ๋ณ์๋ฅผ ๋์ดํ ์ ์์์ต๋๋ค(๋น๋ก _function_name
๋ฅผ ๊ฐ์ ํจ์์ ๋ํ ๊ด๋ก๋ก ์ฌ์ฉํ์ง๋ง)?
GDScript์์ Intellisense๊ฐ ์๋ ๋ด๋ถ ๋ฉ์๋๋ฅผ ๋ณด๊ณ ์ถ์ง ์๊ณ C# ๋ฐ ๊ธฐํ ์ ์ ํ์ ์ธ์ด์ฒ๋ผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
์, ๊ตฌํํ๊ธฐ ์ด๋ ต๊ณ ์๋ก์ด ํค์๋๊ฐ ํ์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์์ฃผ ์์ ๊ฒฐ๊ณผ์ ๋๋ฌด ๋ง์ ๋
ธ๋ ฅ์ด ํ์ํฉ๋๋ค.
"__" ์ ๋์ฌ๊ฐ ์๋ ์๋ฃจ์
์ ๋ถ๋ถ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋๋ถ์ (๋๋ Python์ผ๋ก ์์
ํ ์ ์ด ์์ผ๋ฏ๋ก ์๋ก์ด ๊ฒ์
๋๋ค).
๋๋ ์ด๊ฒ์ด ์ด๋ฏธ ๋ซํ ์๊ณ ๋ณด๊ด๋์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง(์ด์ ๋ํด ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์ด๋ ค์ผ ํ๋์ง ํ์คํ์ง ์์) ์ก์ธ์ค ์์ ์๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋งค์ฐ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. Godot์ฉ ์ ๋ ธ๋ ์ ๋์จ์ ๋ง๋ค๊ณ ์ถ๊ณ ์ ๋ ธ๋์ ๋ ธ๋ ์ธ๋ถ์์ ์์ ๋์ด์๋ ์ ๋๋ ๋ด๋ถ ์ํ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ฐฉ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ชจ๋ฐฉํ๊ธฐ ์ํด ์ ํ ๋ฐ์ค์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ์ฌ์ ํ ์ก์ธ์ค ์์ ์์ ์ ์ฒด ์ง์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ์ง ๋ชปํฉ๋๋ค. ์ ์๊ฐ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋น์ ์ ๊ฐ์ฒด์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ ์ดํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๊ฝค ํฐ ๋ฌธ์ ์ ๋๋ค.
์, @dylmeadows์ ๋์ํฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ ์ฉํ ๊ฒ์ ๋๋ค.
๋๋ ํ์คํ ํ๋ก ๊ฐ์ธ ํจ์์ ๋ณ์์ด๊ธฐ๋ํฉ๋๋ค.
์, ๋ฉ์๋ ์ด๋ฆ ์์ _๋ฅผ ์ฌ์ฉํ๋ private์ ๋ํ ๊ท์น์ด ์์ง๋ง ๊ฐ์ ๊ธฐ๋ฅ์๋ ๋์ผํ ๊ท์น์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ค์ด ํ์๋๋ฉด "์ ๋๋ก ํด๋น ๊ธฐ๋ฅ์ ๋ง์ง์ง ๋ง์ญ์์ค!"๋ฅผ ์๋ฏธํ ์ ์์ต๋๋ค. ๋๋ "ํด๋น ๊ธฐ๋ฅ ๋ฎ์ด์ฐ๊ธฐ!". ์์งํ ์ํํฉ๋๋ค.
ํผ์ ๋๋ ์๊ท๋ชจ ํ๋ก์ ํธ์์ ์์ฃผ ์์ ํ์ผ๋ก ์์
ํ๋ ๊ฒฝ์ฐ ์ด๋ค ๊ธฐ๋ฅ์ด ์ฌ์ฉ๋์ด์ผ ํ๊ณ ์ด๋ค ๊ธฐ๋ฅ์ด ๋ด๋ถ ์ ์ฉ์ธ์ง ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ต๋๋ค.
ํ์ง๋ง ํ์ด ์ฑ์ฅํ ์๋ก ์ด๊ฒ์ ์ ์ ๋ ์ด๋ ค์์ง๋๋ค. ์ฌ๋๋ค์ ํญ์ ์ค์ค๋ก ์์ฑํ์ง ์์ ํด๋์ค๋ก ์์
ํฉ๋๋ค. ์ ๋ ์์
์ ์ํํ๊ธฐ ์ํด ๋ง์ ์์ ๋ด๋ถ ํจ์๋ฅผ ์์ฑํ๋ ์ฌ๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋๋ค์ด ์ด๋ฌํ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๊ธฐ๋ฅผ ์ ๋ง๋ก ์ํฉ๋๋ค. ์๋ํ์ง ์์ ๋์๊ณผ ๋ฒ๊ทธ๋ก ์ด์ด์ง ์ ์์ผ๋ฉฐ ์ค์๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ๊ฒฐ๊ตญ ๊ทธ๋ค์ ์ธ๋ถ์์ ํธ์ถ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ๊ท์น์๋ ๋ถ๊ตฌํ๊ณ , ์ด๋ฌํ ์ผ๋ค์ด ๋ ํฐ ํ์์ ์ผ์ด๋๋ ๊ฒ์
๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ค์ํฉ๋๋ค. ์๋ ์์ฑ. ์ ๋ ์์
์ด ๋ฌด์์ ํ ์ ์๋์ง ๋ฐฐ์ฐ๊ธฐ ์ํด ์ด๊ฒ์ ๋ง์ด ์ฌ์ฉํ๋ ์ฌ๋์
๋๋ค.
๊ทธ๋ฅ '.'๋ผ๊ณ ๋ฃ์์ต๋๋ค. ๋ง์ง๋ง์ ์ด๋ค ๊ธฐ๋ฅ์ด ๋ํ๋๋์ง ํ์ธํ์ญ์์ค. ๋ญ๊ฐ ์ ์ฉํ๊ฒ ๋ค๋ฆฌ๋ฉด ์ฌ์ฉํฉ๋๋ค.
์ด์จ๋ ํธ์ถ๋์ง ์์์ผ ํ๋ ๋ชจ๋ ํจ์๋ก ๋ณต์กํ์ง ์๋ค๋ฉด ํจ์ฌ ๊นจ๋ํ ๊ฒ์
๋๋ค. ๊ฒ๋ค๊ฐ - ๊ทธ๋ฆฌ๊ณ ๋ค์ - ๋๋ ์ฌ์ ํ ์ด _name ํจ์๊ฐ ๋น๊ณต๊ฐ์ธ์ง ๊ฐ์์ธ์ง ๋ชจ๋ฆ
๋๋ค.
๋ํ ๊ฐ์ธ ๋ณ์๋ ๊ฐ์ธ ํ๋ก์ ํธ์์๋ ์ ์ฉํ ์ ์์ต๋๋ค. ๋๋๋ก ๋ด๊ฐ ์์ ํ๊ณ ์๋ ๊ฒ์์์ ์์ ํ ์ ์๋ ๊ธฐ๊ฐ์ด ์์ด์ ์ผ๋ถ ๊ธฐ๋ฅ์ด ํ๋ ์ผ์ ์์ด๋ฒ๋ฆฌ๊ธฐ ์์ํฉ๋๋ค. ๋๋ ์ด๋ค ๊ฒ์ ์ฌ์ฉํด์ผ ํ๊ณ ์ด๋ค ๊ฒ์ ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋์ง ์์ด๋ฒ๋ ธ์ต๋๋ค.
๊ฐ์ธ ๋ณ์๋ ์ด๊ฒ์ผ๋ก ํ๋ฅญํ ๊ฒ์ ๋๋ค! ๋ ธ๋ ์ธ๋ถ์์ ๋ณ์๋ ํจ์์ ์ก์ธ์คํ ์ ์๋๋ก ํ๊ณ ํ๋ก์ ํธ๋ก ๋์์ฌ ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ถ์ธกํ ์ ์๊ณ ๋ด ๋ชจ๋ ์ฝ๋๋ฅผ ๋ค์ ์์ ํ ์ฝ์ ํ์๊ฐ ์์ต๋๋ค.
๋๋ Byteron๊ณผ dylmeadows๊ฐ ๋งํ ๊ฒ ๋ํ ๋ ๋ฒ์งธ์ ๋๋ค. ๊ทธ๋ค์ ๋จ์ง ์์ ์ ๊ฒ์๋ฌผ์ ์ถฉ๋ถํ ์ ์ผ๊ณ ๋ด๊ฐ ์๊ฐํ๋ ๊ฒ์ ์ ํํ ๋งํ์ต๋๋ค. ๊ทธ๋ฅ ๋ด ๋ ์ผํธ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์์ต๋๋ค.
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ด์ฌ์ ๊ฐ๊ณ ์ด์ ๋ํด ๋ ผ์ํ๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ๋ค์ ์ด๊ฒ ์ต๋๋ค. ์์ง ๊ณํ์ ์์ง๋ง ์ปค๋ฎค๋ํฐ์์ ๊ฐํ ๊ด์ฌ์ด ์๋์ง ๋ ผ์ํ๊ณ ๋ณผ ์ ์์ต๋๋ค.
Python์ ์ด์์ ์ด๋ผ๊ณ ์ธ๊ธํ๋ ์ต๊ณ ์ ์ธ์ด๊ฐ ์๋๋๋ค.
Godot๋ ๋งค์ฐ ๊ฐ์ฒด ์งํฅ์ ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ชจ๋ ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด์ด๊ธฐ๋ ํฉ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์ ์์น ์ค ํ๋๋ ์บก์ํ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ์ธ๋ถ์์ ์๋์ง ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ๊ณ ์ถ๋ค๋ฉด ์๋ง๋ ๊ฐ์ฅ ์ข์ ์ด์ ์ผ ๊ฒ์
๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ฌ๋๋ค์ด ๋ณ์๋ฅผ ํธ์งํ๊ฑฐ๋ ํจ์์ ์ก์ธ์คํ๋ ๊ฒ์ ์ ๋์ ์ผ๋ก ๋ฐฉ์ง ๊ฒฝ์ฐ ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค. ์ฌ๋๋ค์ด ์์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง ์์ง ๋ชปํ๋ ํ ๋ฌด์ธ๊ฐ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค์ง ๋ง๋ผ๊ณ ๋งํ๊ณ ์ถ์ ๋๋ง๋ค ์ด๋ฆ ์์ _
(๋๋ _internal_
๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ ๋ถ์
๋๋ค.
๋๋ ๋จ์ํ ์๋ ์์ฑ์์ ๋ณ์/ํจ์๋ฅผ ์จ๊ธฐ๋ ํค์๋(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ ๋ฐ๋ํ์ง ์์ ๊ฒ์ ๋๋ค. ์ ๊ทผ์ ์์ ํ ์ฐจ๋จํ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํํธ์ผ๋ก๋ ๊ธ์งํ์ง ๋ง๊ณ ๊ฒฝ๊ณ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ๋ฉด์ private ํ๋์ ๋ฉ์๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธด ๋ณ์ ์ด๋ฆ(์: _internal_variable
)์ ์ฝ๊ฐ ์ฑ๊ฐ์ญ๋๋ค.
์ด๋ค ๊ฒฝ์ฐ๋ private
ํค์๋๊ฐ ์๋ค๊ณ ํด์ ๊ฐ์ ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋๋ค.
ํด๋์ค์ private ๋ฉค๋ฒ๋ฅผ ์์์ ๊ฐ์ ๊ฒ์ผ๋ก ๋ง๋ญ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณ์ ์ด๋ฆ์ BIG LETTERS๋ก ์ฐ๊ณ ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๋ฐ ๋์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฒ ํ์ง ์์ต๋๋ค. ์ฆ, private ๋ณ์๋ ์ผ๋ฐ ๋ณ์์ ์์์ ๊ต์ฐจ์ ์ ๋๋ค. ์ด ๊ฒฝ์ฐ์ ํน๋ณํ ํค์๋๋ฅผ ์ ๋ ฅํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์, ๋ฉ์๋ ์ด๋ฆ ์์ _๋ฅผ ์ฌ์ฉํ๋ private์ ๋ํ ๊ท์น์ด ์์ง๋ง ๊ฐ์ ๊ธฐ๋ฅ์๋ ๋์ผํ ๊ท์น์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ค์ด ํ์๋๋ฉด "์ ๋๋ก ํด๋น ๊ธฐ๋ฅ์ ๋ง์ง์ง ๋ง์ญ์์ค!"๋ฅผ ์๋ฏธํ ์ ์์ต๋๋ค. ๋๋ "ํด๋น ๊ธฐ๋ฅ ๋ฎ์ด์ฐ๊ธฐ!". ์์งํ ์ํํฉ๋๋ค.
์ด๊ฒ์ด ์ ๊ฐ ์ฌ๊ธฐ์ ๋ณธ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์
๋๋ค. private
ํค์๋ ๋์ virtual
ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ์ผ๋ถ ๊ฐ์ ๋ฉ์๋๋ "func"๋ฅผ ์์ฑํ ๋ ์ด๋ฏธ ์๋ ์์ฑ์ ๋ํ๋๋ฏ๋ก ๋ฎ์ด์จ์ผ ํ๋ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์๋ ์์ฑ์ ๋ํ๋์ง ์์์ผ ํ๋ ๊ฐ์ธ ๊ธฐ๋ฅ์ ๋ช
์์ ์ผ๋ก ๊ตฌ๋ถํ๋ ํค์๋๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค. ์ ์ฅ์ virtual
ํค์๋๋ ์ ๊ฒ ์ด์์ ์ฌ์ฉํ์ญ์์ค ์๋ค๋ ๊ฒ์
๋๋ค private
๋ ์ฐ๊ธฐ, ๊ทธ๋์.
๊ฐ์ธ ํด๋์ค ๋ฉค๋ฒ๋ ํฌํจ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ๋ค๋ฅธ ์ธ์ด์ ์กด์ฌํ๋ ์ด์ ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ ์๋น์/ํ ๊ตฌ์ฑ์(๋๋ ์์ ๋)์ ๋ชจ๋ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ํ์๊ฐ ์์ต๋๋ค. ์ฌ์ค, ๊ทธ๋ค์ ์๋ง๋ ์ด์จ๋ ๋ด๋ถ์ ์์ด์ผ ํ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์ฅ๋์ ์น ์ ์๋ ์ต์ ์ด ์์ด์ผ ํฉ๋๋ค.
๋๋ ์ ํ ๋ฐ์ค์ด ์ด๊ฒ์ด ๊ฐ์ธ ํ์์์ "ํ์"ํด์ผ ํ๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ์ค์ ๋ก๋ ์ด๋ป๊ฒ๋ ์์ ํ๋ฉด ์์ ์ด ์๋ฃ๋๋์ง ์ฌ๋ถ๋ ์๋ฌด๋ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ผ๋ถ๋ฅผ ์ฌ์ฉํ๊ณ ๋ชจ๋ ์ฌ๋์ด ์ํ๋ ๋๋ก ๋ณ๊ฒฝํ ์ ์๋ ๊ฒฝ์ฐ ํนํ ๊ณ ํต์ค๋ฝ์ต๋๋ค. ๋ด๊ฐ ๋ง๋๋ ๋ชจ๋ ๊ฐ์ฒด/์คํฌ๋ฆฝํธ์ ์ํ๋ฅผ ์์ ํ ์ ์ดํ๊ณ ์ถ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ํ ๋๋ง๋ค ์ํ์ ๋ชจ๋ ์ธก๋ฉด์ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ ๊ฒ์ ์ง์ฆ๋๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ์ฌ๋๋ค์ด ์๋นํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋ง๋ญ๋๋ค.
๊ทธ ์ธ์๋ "์ฌ์ฉ ๊ฐ๋ฅํ" ๋ณ์/ํจ์ ๋ชฉ๋ก์ ์ ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ๋ฐ์ ํ์ ํ ๊ฐ์ง ์ถ์ฒํ ์ ์์ต๋๊น? ๊ทธ๋ฐ ๋ค์ ์ด ๋ชจ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์๋ ์์ฑ ๋ชฉ๋ก ์์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๋ฌธ์๋ ์ซ์๋ก ์์ํ์ง ์๋ var ๋๋ func๋ ์๋ ์์ฑ ๋ชฉ๋ก์ __Bottom__์ ๋ํ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํญ๋ชฉ์ ๋ณด๋ ค๋ฉด _๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ๋ํ ์ด๋ฆ์ ์ํ์ด ์๋ ๋ค๋ฅธ ๊ธฐํธ๋ ๋ ผ๋ฆฌ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ๋ ์ข๊ฒ ์ฃ ? ์์ง ์๋ํ์ง ์์์ง๋ง โฌDisplay ๋๋ ยฅPrint๊ฐ ํ์ฉ๋๋ ํจ์ ์ด๋ฆ์ ๋๊น? ๋ฑ.
๋ํ ์ด๋ฆ์ ์ํ์ด ์๋ ๋ค๋ฅธ ๊ธฐํธ๋ ๋ ผ๋ฆฌ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ข๊ฒ ์ฃ ? ์์ง ์๋ํ์ง ์์์ง๋ง โฌDisplay ๋๋ ยฅPrint๊ฐ ํ์ฉ๋๋ ํจ์ ์ด๋ฆ์ ๋๊น? ๋ฑ.
๊ทธ๋์ ์ด๊ฒ์ ๊ฒ ๋ง์ง์๊ฑฐ๋ฆฌ๋ค๊ฐ ์๋ฌด ์์ ๋ ํ์ง ์๋ setter๋ฅผ ์ ์ํ๋ฉด ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ๋์ผํ ๋ณ์์ ์ ๊ฐ์ ํ ๋นํ๊ณ ์ธ์ํ๋ ค๊ณ ํด๋ ์๋ ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค. ์ธ์. ์ ๋ง ์ฌ์ ์ธ ๊ฑด ์๋์ง๋ง, ์ถฉ๋ถํ ๊ฐ๊น๋ค๊ณ ์๊ฐํฉ๋๋ค...
๊ณต๊ฐ๋ก ํ์๋๊ณ ๋ฐฉ๊ธ ์์ ํ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ ํํธ๊ฐ ์ ํ ์๋ค๋ ์๋ฏธ์
๋๊น?
์ด ๋ฐฉ๋ฒ์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๋ ๋๋ฒ๊น
์ฝ๋๋ฅผ ์ฌ๋ฏธ์๊ฒ ์ฆ๊ธฐ์ญ์์ค.
๋น setter ๋์ ์ค๋ฅ๋ฅผ ์ธ์ํ ์๋ ์์ต๋๋ค.
๋๋ ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์ค์ ๋ก ๊ทธ ์ฝ๋ ์ค์ ์ ์คํ์ ๋ ํ์ง ๋ง์์ผ ํ ์ผ์ ํ๋ค๋ ๊ฒ์ ์ฌ์ ํ ์๊ณ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ ์ฌ์ ํ ๊ณต๊ฐ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ๋จ์ผ ๊ฐ์ธ ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉด ์ฌ๋ฌ ์ค์ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
ํผํ
private
๊ทธ ๋ณ์์ ์์์ด ๋ฐฉ๋ฒ์ ์งง์ ์ฝ๋์ ์ถ๊ฐ ๋ผ์ธ์ ํ์๋กํ์ง ์์ผ๋ฉฐ, ๋ด๊ฐ ์
๋ ฅ ํ ๋ ๊ฑฐ์ง ๊ถ๋ฆฌ๋ฅผ ์ก์ธ์ค ๋๋ฅผ ๋ง์ ๊ฒ์
๋๋ค.
GDScript๋ ๋์ ์ธ์ด๋ผ๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ๋์๊ฒ ์๋นํ C++์ฒ๋ผ ๋๊ปด์ง๋๋ค. C++๋ก ์ฝ๋ ์์ฑ์์ GDScript๋ก ์ ํํ ๋ ์ก์ธ์ค ์์ ์๊ฐ ๊ทธ๋ฆฌ์์ง๋๋ค. ์ฆ, GDScript๋ ์ค์ ๋ก OOP์ ๋ํ ์์ ํ ์ง์์ด ์์ต๋๋ค.
๋๋ ์ด ๋ฌธ์ ๋ง ํ์ด๋ณด์์ง๋ง, ์ด๋ฆ ์์ ๋ฐ์ค์ด ๋ถ์ ํจ์์ ๋ณ์๋ฅผ ์๋ ์์ฑ์์ ์จ๊ธธ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ฐ์ ๊ธฐ๋ฅ์ธ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ณ ๋ฐ๋ผ์ ์๋ง๋ ๊ด๊ณ์์ด ๋ํ๋์ผ ํ ๊ฒ์ ๋๋ค.
๋ฐ์ค์ ๊ฐ์ ๊ธฐ๋ฅ์๋ ์ฌ์ฉ๋๋ฉฐ ๊ฐ์ ๊ธฐ๋ฅ๋ ๊ณต๊ฐํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ๋ถ๋ช ํ ์์ต๋๋ค.
๋ค๋ฅธ ๋ ธ๋/๊ฐ์ฒด์์๋ง ๋ฐ์ค ์ ๋์ฌ๊ฐ ๋ถ์ ํจ์๋ฅผ ์จ๊ธธ ์ ์์ง๋ง self/base์ ๋ํ ํธ์ถ์ ๋ํด์๋ ํ์ํฉ๋๋ค.
๋ด ์ ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋จ์ผ ๋ฐ์ค์ ์ฌ์ฉํ๊ณ "๋น๊ณต๊ฐ" ๊ธฐ๋ฅ์ ์ด์ค ์ ํ ๋ฐ์ค์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฐ ์์ผ๋ก ๊ฐ์ ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์๋ ์์ฑ์์ ์จ๊ธธ ์ ์์ต๋๋ค.
๋ณ์๋ฅผ ์จ๊ธฐ๊ธฐ ์ํด ๋ฐ์ค์ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ง ์์ต๋๋ค. ๋ณ์์ ์ก์ธ์ค _attribute_๋ฅผ ๋ณ๊ฒฝํ ๋ _name_์ ๋ณ๊ฒฝํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฌ์ค variable
์ _variable
๋ ๋ค๋ฅธ ์ด๋ฆ์
๋๋ค.
์ด๊ฒ์ ๋ํ UNIX ํ์ผ ์ด๋ฆ์ ์ ๊ณผ๋ ๊ฐ์ต๋๋ค. ์๋นํ ๋
ผ์์ ์ฌ์ง๊ฐ ์๋ ๊ฒฐ์ ์
๋๋ค.
์ฌ๊ธฐ ๋ด ์๊ฒฌ์ด ์์ต๋๋ค
์๋ "__" ์ ๋์ฌ๊ฐ ์๋ ๋ณ์๋ฅผ ํฌํจํ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์ค๋จํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ ์ธํ๊ณ ๋ ๊ทธ ์์คํ ์ด ์ด์์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ง๊ธ๊น์ง GDScript์ ๊ธฐ๋ฅ์ Python/JS์ ๋งค์ฐ ์ ์ฌํ๋ฉฐ ์ด ๋ ์ธ์ด ๋ชจ๋ ๋งค์ฐ ์ข์ ์ด์ ๋ก ๊ฐ์ธ ๋ณ์์ ํจ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ทธ๋ค์ ๋์์ธ ์ฒ ํ๊ณผ ์์ ํ ๋ฐ๋์ ๋๋ค. ๋น์ ์๊ฒ๋ ์์ ๊ฐ ์๊ณ ๊ทธ ์์ ๋ ์ค์ํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก ์ฝ๋ฉ์ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์บก์ํ๋ฅผ ํฌ์ํ์ง๋ง ๊ทธ๊ฒ์ด ๊ทธ๋ค์ ์ฒ ํ์ ๋๋ค. ์ง์ ํ ์บก์ํ๋ [๋ชจ๋ ์ ํ์ ์ง์ ํ์ธํ์ง ์๋ ํ] ์ ํ ๊ฒ์ฌ ์์ด ์ด๋ฏธ ๊นจ์ก์ต๋๋ค. ๋ฐ๋ผ์ ์๊ฒฉํ ์ ํ ์ง์ ์ ๊ตฌํํ์ง ์๋ ํ ๊ฐ์ธ ๋ณ์๋ ์๋ชป๋ ๊ฒ์ผ๋ก ๋๊ปด์ง๋๋ค. OOP์ ๊ทธ๋๋์ธํธ์์ ์๊ฒฉํ ์ ํ ์ง์ ์ ๊ฐ์ธ ๋ณ์๋ณด๋ค ๋จผ์ ์ต๋๋ค. ์๋ฐํ ํ์ดํ์ด ์๋ ์ธ์ด๋ ๋ง์ง๋ง ๊ฐ์ธ ๋ณ์๊ฐ ์๋ ์ธ์ด๋ ๋ง์ง๋ง ๊ฐ์ธ ๋ณ์๊ฐ ์๊ณ ์๋ฐํ ํ์ดํ์ด ์๋ ์ธ์ด๋ ์์ต๋๋ค. ์ด๊ฒ์ ์ ๋นํ ์ด์ ๊ฐ ์์ต๋๋ค. ๊ทธ ์ธ์๋ JS๋ ์ ์ฒด ์์ ํธ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๊ณ ์ด๋ฌํ ์ธก๋ฉด๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ฐ์ฒด๊ฐ ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์ ์ค์ ๊ฐ์ฒด๊ฐ ์์ํ๋ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค! ๋ฌผ๋ก ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋์ง๋ ์์ง๋ง ๋์์ธ ์ฒ ํ์ ๋ณด์ฌ์ค๋๋ค.
๋ฐ๋ผ์ ์ ์๊ฐ์๋ ์ง์ ํ ๊ฐ์ธ ๋ณ์๊ฐ ์ธ์ด๋ฅผ ํฌ๊ฒ ๋ฐฉํดํ ๊ฒ์ ๋๋ค. ์ด์จ๋ , ๋๋ ํ์ด์ฌ์ ์์คํ ์ด ๊ทธ๊ฒ์ ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋น์ ์ ๊ฐ์ธ ๋ณ์์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ __์ด ์์ง๋ง, ๋น์ ์ด ๋ด๋ถ์ ์ธ ๊ฒ์ ์๋ง์ผ๋ก ๋ง๋ค๊ณ ์๋ค๋ ๊ฒ์ ๋ถ๋ช ํ ํ์ง๋ง ์๋ฏธ ์๊ฒ ์ ํํ์ง๋ ์์ต๋๋ค. ์ง์ ํ OOP ๋์์ธ ์ฒ ํ์ ์ํ๋ ์ฌ๋์ ๋จ์ํ "__"๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ์ฌ ๋๋ ํ๋ก์ ํธ์ ์ฝ๋ฉ ์คํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ ์ค๋ฅ๋ก ํ์ํ๋ ์ต์ ์ด ์ข์ ๊ฒ์ ๋๋ค. ๋ด ๋ง์ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฆฌ ํ์ดํ๊ณผ ๊ฐ์ธ ๋ณ์๋ ์ค์ ๋ก ํจ๊ป ๊ฐ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ต์ํ "hi"๊ฐ ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ obj.set("hi", 5)๊ฐ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ต์ํ ๋ค์์คํ์ด์ค๋ฅผ ์์ ํ ๋ง์ณ์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ "hi"๊ฐ ์์ผ๋ฉด ์๋ํฉ๋๊น? ๊ทธ๊ฒ์ ๋ณ๋ก ๋ง์ด ๋์ง ์์ต๋๋ค... ๊ทธ๋์, ๋น์ ์ด ๋ฌด์์ ํ๋ private๋ฅผ ์์ ํ ์ก์ธ์คํ ์ ์๋๋ก ๊ฐ์ํ๋ ๊ฒ์ ๋ํด ๋งค์ฐ ๊ฐํ ๋ฐ๋, ๊ทธ๊ฒ์ด ์ ํฌํ์ ๋๋ค. Python์ด ํ์ฌ ์ํํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ธ ๋ณ์๊ฐ ์กด์ฌํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. Tbh ์ง์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ ๊ฐ์ธ ๋ณ์๋ฅผ ๊ฐ๊ณ ์ถ์ดํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ธ ๋ณ์๋ก ์ค๋ฆฌ ํ์ดํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ ํ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. obj.set์ ์ฐจ๋จํ๊ณ ์ค๋ฅ๋ฅผ ๋์ง๊ฒ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ obj.set์ ๋ถ์ธ ๊ฐ์ ๋ฐํํด์ผ ํฉ๋๋ค. ์ด์ํ๊ฒ ๋ณด์ ๋๋ค. is_private ํธ์ถ? obj.set์ ์ฌ์ฉํ ๋๋ง๋ค ํธ์ถํด์ผ ํฉ๋๊น? ์ดํฌ
[๋ง์์ฌ, ์ฐ๋ฆฌ๋ ์ค์ ์ค๋ฅ ๊ฐ์ง๋ฅผ ์ป์ ์ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ๊ฐ์ธ ๋ณ์์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ง๋ง ํ์ฌ๋ก์๋ gdscript์ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฉด ๊ฒ์์์ ์กฐ์ฉํ ๋ฌด์ํฉ๋๋ค(facepalm). ์ด์ฉ๋ฉด ๋ด๊ฐ ์๋ชปํ๊ณ ์๋ ๊ฒ์ผ ์๋ ์์ง๋ง ๋ด ์ฝ๋๊ฐ ๋ถ๋ฒ์ ์ธ ์์ ์ ์ํํ๋ ๊ฒฝ์ฐ gdscript๊ฐ ํจ์์์ null์ ๋ฐํํ์ฌ ์ถ์ ํ๊ธฐ๊ฐ ๋๋ฌด ์ด๋ ค์ JS๋ ๊ทธ ์ ๋๋ก ๋๋นด๊ณ JS๋ ์ธ์ด์ ์๋ง์ ๋๋ค. ๊ฒ์ ์ถฉ๋์ด ๋๋ฌด ๋ง๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ ์๊ฐ ์ธ์๋๊ณ ํ์๊ฐ ์ธ์๋์ง ์๋ ๋ ๊ฐ์ ์ฐ์์ ์ธ ์ธ์ ๋ช ๋ น๋ฌธ์ ์ฐพ์ ๋๊น์ง ์ธ์ ๋ช ๋ น๋ฌธ์ ๋ฃ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ด์ง ๊ฒ์ํด์ผ ํฉ๋๋ค. JS/Python์ ๋ค๋ฅธ ๋ชจ๋ ๋ฉด์์ ์ผ๋ง๋ ์์ ๋กญ์ง๋ง ๊ทธ๋ฐ ๋ฉด์์ ๋๋ผ์ธ ์ ๋๋ก ํจ์ฌ ๋ ์๊ฒฉํฉ๋๋ค.]
๋ฌธ์ ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ์ผ๊ด๋ ํ๋ก์ ํธ ์กฐ์ง์ ์ฐพ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฅ๋ฉด์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ธํฐํ์ด์ค๋ก ์ฌ์ฉํ์ฌ ์ธ๋ถ์์ ์ฅ๋ฉด์ ์ ์ดํ๊ณ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฑ์๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ ๋ฉ์๋๋ง ์ฌ์ฉํ๊ณ ๋ณ์ ๋ฐ ์ ํธ๋ฅผ ๋ด๋ณด๋ผ ์ ์์ผ๋ฉฐ ์ธ๋ถ์์ ๊ฐ๋จํ ๋ณ์๋ ์ ๋ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ๋จํ ๊ท์น์ด๋ฉฐ GDScript๋ ๋จ์ํจ์ ์ ์งํ ์ ์์ต๋๋ค.
ํ์ด์ฌ์์๋ ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ์ด์ค ์ ํ ๋ฐ์ค์กฐ์ฐจ๋ ๋ณ์์ ์ก์ธ์คํ๊ณ ์์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ์ง ์์ต๋๋ค. Python์์๋ ๋์ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค. ๋ณ์๊ฐ private์์ ๋ํ๋ด๋ ์ ํ ๋ฐ์ค ํ๋, ์์์์ ๋ํ๋ด๋ ALL_CAPS... ์ด๋์์๋ ์ฌ์ ํ ์ก์ธ์คํ ์ ์์ง๋ง ์ค์ ๋ก๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
๋๋ ๋จ์ง ํ์ด์ฌ์์ _private_ ์์ฑ์ ๊ฐ์ง ์ ์๋ค๋ ๊ฒ์ ๋งํ๊ณ ์ถ์ต๋๋ค.
์ธ์ฉ(https://www.python.org/dev/peps/pep-0008/):
__double_leading_underscore: ํด๋์ค ์์ฑ์ ์ด๋ฆ์ ์ง์ ํ ๋ ์ด๋ฆ ๋งน๊ธ๋ง์ ํธ์ถํฉ๋๋ค(ํด๋์ค FooBar ๋ด๋ถ์์ __boo๋ _FooBar__boo๊ฐ ๋ฉ๋๋ค. ์๋ ์ฐธ์กฐ).
__double_leading_and_trailing_underscore__: ์ฌ์ฉ์ ์ ์ด ๋ค์์คํ์ด์ค์ ์๋ "๋ง๋ฒ์" ๊ฐ์ฒด ๋๋ ์์ฑ. ์: __init__, __import__ ๋๋ __file__. ๊ทธ๋ฐ ์ด๋ฆ์ ๋ง๋ค์ง ๋ง์ญ์์ค. ๋ฌธ์ํ๋ ๋๋ก๋ง ์ฌ์ฉ
ํด๋น ๋งํฌ๋ฅผ ํด๋ฆญํ๊ณ CTRL+F "๋น๊ณต๊ฐ"๋ฅผ ํด๋ฆญํ๋ฉด
์ฌ๊ธฐ์ "๋น๊ณต๊ฐ(private)"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ํ์ด์ฌ์์๋ ์ด๋ค ์์ฑ๋ ์ค์ ๋ก ์ฌ์ ์ธ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค(์ผ๋ฐ์ ์ผ๋ก ๋ถํ์ํ ์์ ์์ ์์ด).
์ด์ค ๋ฐ์ค ๋๋ ๋จ์ผ ๋ฐ์ค ๋ณ์๋ ์ผ๋ฐ ๋ณ์์ฒ๋ผ ์๋ํฉ๋๋ค. ์ฌ์ฉํด์๋ ์ ๋๋ฉฐ ๋ด๋ถ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๋ณ๊ฒฝ๋ ์ ์์์ ์ฐธ์กฐํ๋ ๊ท์น์ผ ๋ฟ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก GDScript์ ๊ฐ์ ํ์ด์ฌ ์ธ์ด๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ ์ธ ๊ฒ์ฒ๋ผ ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ ๋ณ์๋ฅผ ๊ฐ์ ๋ก ์ ์ฉํ์ฌ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ์ด์ํ ๊ฒ์ ๋๋ค.
ํด๋น ๋งํฌ๋ฅผ ํด๋ฆญํ๊ณ CTRL+F "๋น๊ณต๊ฐ"๋ฅผ ํด๋ฆญํ๋ฉด
์ฌ๊ธฐ์ "๋น๊ณต๊ฐ(private)"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ํ์ด์ฌ์์๋ ์ด๋ค ์์ฑ๋ ์ค์ ๋ก ์ฌ์ ์ธ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค(์ผ๋ฐ์ ์ผ๋ก ๋ถํ์ํ ์์ ์์ ์์ด).
์ด์ค ๋ฐ์ค ๋๋ ๋จ์ผ ๋ฐ์ค ๋ณ์๋ ์ผ๋ฐ ๋ณ์์ฒ๋ผ ์๋ํฉ๋๋ค. ์ฌ์ฉํด์๋ ์ ๋๋ฉฐ ๋ด๋ถ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๋ณ๊ฒฝ๋ ์ ์์์ ์ฐธ์กฐํ๋ ๊ท์น์ผ ๋ฟ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก GDScript์ ๊ฐ์ ํ์ด์ฌ ์ธ์ด๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ ์ธ ๊ฒ์ฒ๋ผ ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ ๋ณ์๋ฅผ ๊ฐ์ ๋ก ์ ์ฉํ์ฌ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ์ด์ํ ๊ฒ์ ๋๋ค.
๋์ํฉ๋๋ค. ๊ทธ๋ค์ ๊ทธ๊ฒ์ _private_ ์์ฑ์ด๋ผ๊ณ ๋ถ๋ฅด์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ ๋ฐฉ์์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
# defining class Employee
class Employee:
def __init__(self, name, salary):
self.name = name
self.__salary = salary
>>> emp = Employee("Bill", 10000)
>>> emp.__salary
# AttributeError: 'employee' object has no attribute '__salary'
๋ฐ๋ผ์ _private_ ์์ฑ์ด๋ผ๊ณ ํ์ง ์์ง๋ง ๊ฑฐ์ ๋น์ทํ๊ฒ ๋์ํฉ๋๋ค.
Python์ ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ GDScript์ ๊ฑฐ์ private ์์ฑ์ ๊ฐ๋ ๊ฒ์ด ์ข์ ๊ฒ์
๋๋ค.
์, ๋ค, ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. Python์ ๋จ์ํ ._Employee__salary๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฌธ๋ฒ์ ์คํ์ ์ ๊ณตํฉ๋๋ค. ๋๋ ๊ฐ์ธ์ ์ผ๋ก python์ด ํ๋ ๋ฐฉ์์ ์ข์ํ์ง ์์ผ๋ฉฐ ๋ด ์๊ฒฌ์์ ์ธ๊ธํ๋ฏ์ด Godot์์ ๊ฐ๋ ฅํ๊ฒ ๊ฐ์ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
class Employee:
var name # normal
private var salary # Syntactic sugar for var _salary
_Employee__salary๋ ๋ณ์ ์ด๋ฆ์ ์จ๊ธฐ๋ ์ถ์ ํ ๋ฐฉ๋ฒ์ด๊ณ private ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ OOP์ฒ๋ผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋ ๊นจ๋ํฉ๋๋ค. ๋ ๋์๊ฐ ์ด๊ฒ์ ๊ณต๊ฐ ๋ณ์ ๊ธ์ฌ์ ๊ฐ์ธ ๋ณ์ _salary๋ฅผ ๊ฐ์ง ์ ์๋ ๊ธฐ๋ฅ์ ์ฐจ๋จํฉ๋๋ค. ์ด๋ ๋ณด๊ธฐ ํํ๊ณ ๋ฐ๋์งํ๊ฒ๋ Java์์์ฒ๋ผ ๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ๋ ๋ค "var ๊ธ์ฌ"์ "private var ๊ธ์ฌ"๋ก ์ ์ธ๋์ด ๋ช ๋ฐฑํ ์ถฉ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๊ฐํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ "๋ฉค๋ฒ m์ด ์๋ ๋ค๋ฅธ ํด๋์ค C์ ๊ฐ์ธ ๋ณ์์ ์ก์ธ์คํ๋ ค๋ฉด C._m์์์ ๊ฐ์ด ๋ฐ์ค์ ์ฌ์ฉํด์ผ ํฉ๋๋ค"์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐ์ค๋ก ์์ํ๋ ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ ์ค๋ฅ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์ฆ, ๋ณ์๋ฅผ ์ ์ธํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ private๋ก ๋ง๋ค์ด ์ํ ์ค์ธ ์์ ์ ๋ช ํํ๊ฒ ํ ์ ์์ต๋๋ค.
python์ด rn๋ณด๋ค ๋ ๋ฐ๋์งํ ์ํฉ์ ๊ฐ๋ ์ ์ผํ ์ด์ ๋ ๋ณ์์ ๋ํ ์ ์ธ์ด ๋งจ ์์ ์๊ณ ํจ์ ๋ณธ๋ฌธ์์ ํด๋์ค ๋ณ์๋ฅผ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค. GDScript๋ ํด๋์ค ๋ณธ๋ฌธ์ ์ ์ธ์ ์๊ตฌํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ Java์ ๊ฐ์ ๊ฐ์ธ ์ ์ธ์ผ๋ก ์ฝ๊ฒ ๋ถ๋ฆฌ๋ฉ๋๋ค.
๋๋ ๋ง์ ํ์ดํ์ ์ ์ฅํ์ง ์๋ ํ ๊ตฌ๋ฌธ ์คํ์ผ๋ก ์๋ํ๋ ํค์๋๋ฅผ ์ข์ํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ private
ํ๋ฉด ์ค์ ๋ก ๋ ๋ง์ ๋ฌธ์๋ฅผ ์์ฑํ๊ฒ ๋์ด ๋ฐ๋ก ๊ฐ๊ธฐ ๋ฐฉ์ง๊ฐ ๋ฉ๋๋ค. :slightly_smiling_face:
๋ํ ๋ฐฉ๋ฒ์ ์ด๋ป์ต๋๊น? ์ฌ๋ฌ ๊ฐ์ ๋ฉ์๋๋ ๋ฐ์ค๋ก ์์ํ๋ฏ๋ก ๋จ์ผ ๋ฐ์ค์ ์ฌ์ฉํ์ฌ ๋น๊ณต๊ฐ๋ก ํ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ ๊ฐ์ ๋ฐ์ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ ๊ธธ์ด์ง๋ ๋์ ์ถฉ๋์ ํผํ ์ ์์ต๋๋ค. ๋ํ ์ดํด๊ฐ ๋ ๋ Python ๊ท์น์ ๋ฐ๋ฅด๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค. "dunder"๋ ํด๋น ์ธ์ด์์ ํ๋์ ์ธ๊ธฐ๊ฐ ์์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ง๋ฆ๊ธธ๋ก ๋ณด๋ ๊ฒ์ด ์๋๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋์ ์์ด๋์ด๋ ํด๋์ค ์ธ๋ถ์์ "_"๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ธ ๋ณ์์ ์ก์ธ์คํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ตฌ๋ฌธ ์คํ์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ํ์ด์ฌ์ด ์ํํ๋ ๋ฐฉ์๊ณผ ๋์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ์, ๊ทธ๋ ์ต๋๋ค. ํ์ด์ฌ์ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ ์คํ์ด ๋ง์ ํ์ดํ์ ์ ์ฝํ์ง๋ง ๊ทธ๊ฒ์ ๋จ์ง ์ด๋ฆฌ์์ ๊ธด ๊ฒ์ผ๋ก ๋ณ์นญ์ด ์ง์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ ์งง์ ๊ฒ์ผ๋ก ์จ๋ฆฌ์ด์ฑํ๋ ๊ฒ์ด ๋ ๋ซ์ต๋๋ค. ๋ฐ๋ผ์ ๋ ์งง์ ๋ณ์นญ์ ์ฌ์ฉํ๊ณ ๋ณ์นญ์ด ๋๋ฌด ์งง๊ธฐ ๋๋ฌธ์ ํด๋น ๊ตฌ๋ฌธ ์คํ์ ์ฌ์ฉํ์ง ์๊ธฐ๋ก ์ ํํ๋ ๊ฒ์ ๊ฐ์ธ ๋ณ์๋ฅผ ์ ํ ์ง์ํด์ผ ํ๋์ง ์ฌ๋ถ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ด ํ์๋ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ณ์ ์์ ๋ฐ์ค์ ์ถ๊ฐํ๊ฑฐ๋ ๊ณ ์ ํ ๊ท์น์ ์ ํํ๋๋ก ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋จ์ง "_myvariable"์ ๊ด๋ก๋ก ๋น๊ณต๊ฐ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์คํ๋ ค "private var myvariable"์ ์์ฑํ๋ ค๋ Java ๋ฐ C++ ๋ง์ธ๋๋ฅผ ์ํ ๊ฒ์ ๋๋ค. OOP ์ธ๊ณ์์ ์ฌ ๋ ๋ ๋ค ์ ํํ ๊ฒ์ ๋ฌ์ฑํ๋๋ผ๋ ์ด์ํ๊ฒ ๋๊ปด์ง๋ ๊ฒ์ ๋๋ค. ๊ฐ์ ๊ฒ. ์ด์ค ๋ฐ์ค์ Python์ ๊ตฌ๋ฌธ๊ณผ ๋งค์ฐ ์ ์ผ์นํ๋ฏ๋ก ์ ๋ ๊ทธ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. ํนํ if _ ๊ฐ ๋ค๋ฅธ ํญ๋ชฉ๊ณผ ์ถฉ๋ํ๋ ๊ฒฝ์ฐ
๋๋ ์คํ๋ ค ์คํ์ผ ๊ท์น์ผ๋ก ์๋ชป ํด์๋ ์ ์๋ ๊ฒ ์ด์ธ์ ๋์์ ๋ช
์์ ์ผ๋ก ์ ์ํ๋ ํค์๋๋ฅผ ๊ฐ๊ณ ์ถ์ต๋๋ค. private
์ด ๋ด ํฌํ๋ฅผ ์ป์ต๋๋ค.
ํ ๋ก ์ ๋ถ์ ๋ํ๊ธฐ: "๋น๊ณต๊ฐ" ๋ฉค๋ฒ์ ๋ํ ํ์ด์ฌ ์คํ์ผ ์ง์ ๊ท์น์ ์ด๋ฆ ์์ ๋ฐ์ค์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ์ด ๋ฐ์ค์ _ready()
, _input
์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ด๋ฒคํธ ๋ฉ์๋์์ ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก gdscript์ ์ํด _์ด๋ฏธ_ ์ฌ์ฉ๋ฉ๋๋ค. _physics_process
, ๋ช ๊ฐ์ง๋ฅผ ์๋ก ๋ค ์ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋น๊ณต๊ฐ๋ผ๊ณ ํด์ผ ํฉ๋๊น? private ํค์๋๋ฅผ ์ถ๊ฐํ๋ฉด ์ด๋ฌํ ๋ฐฉ๋ฒ๊ณผ ์ด๋ป๊ฒ ์ํธ ์์ฉํฉ๋๊น? protected
๊ฐ์ ๋ค๋ฅธ ํค์๋๋ ๊ตฌํํด์ผ ํฉ๋๊น?
์ด์จ๋ ์ ๋ ์ฌ์ฉ์๊ฐ ๊ท์ฝ์ ์ ์ํ๋๋ก ํ๋ ๊ฒ๋ณด๋ค _๋์์ธ์ ์ํด_ ์ ํ์ ์ธ ์ง์๋ฌธ์ ์ํํ๋ ๋ฐ ์ฐฌ์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌํ์ ๋ณต์ก์ฑ์ ๊ฐ์ํ ๋ private ํด๋์ค ๋ฉค๋ฒ๊ฐ ์๋ํ ๊ฐ์ ์ ์ ๊ณตํ ์ง ํ์ ํ ์ ์์ต๋๋ค. ์ ์ฒด API๋ ๋ค์ ๋ฐฉ๋ฌธํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ฒด ์ธ์ด๋ ์์ ํ ๋ค๋ฅธ ํจ๋ฌ๋ค์์ ๊ฐ์ง ๊ฒ์ ๋๋ค.
์, ๋๊ตฐ๊ฐ ์ด๋ฏธ ์ง์ ํ์ต๋๋ค. (Calinou์ ์๋ต ์ฐธ์กฐ) ์ด์ค ๋ฐ์ค์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ค. ํ์ด์ฌ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๋ด 2c. Python์์๋ _
์์ํ๋ ํด๋์ค ๋ฉค๋ฒ์ ์ก์ธ์คํ๋ ๊ฒ์ ๋ง์ง ๋ชปํฉ๋๋ค. ๋ด๋ถ ์ง์๋ __
ํฉ๋๋ค.
์๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค. ์ฒ ํ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ฑ์ธ์ด๋ฉฐ, ์ค์ ๋ก ๊ฐ์ธ ๋ณ์๋ ํจ์์ ์ก์ธ์คํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฐ๋ฆฌ ์ค์ค๋ก ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
@sanchopanca
__
์ฌ์ฉ์ ์ข์ํ๋ ๊ฒ์ ์๋๋๋ค.๋๋ private
ํค์๋์ ์ฐฌ์ฑํฉ๋๋ค. ํธํ์ฑ๋ ๊นจ์ง์ง ์์ต๋๋ค.
๋์ , ๋ง๋๋ func
๋ฐ var
์ฌ์ฉํ์ฌ ๊ฐ์ธ _
, (๋ด๊ฐ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ๊ฐ์ง์ ๋ํ ์ํฉ์ ํ๊ฐ ํ _
๋จ์ง ํจ์์ ๋งค๊ฐ ๋ณ์ ).
๊ทธ๊ฒ์ ์๋ก์ด ์ ์ ํ์ดํ ๊ธฐ๋ฅ์ ์๊ฐ๋๊ฒ ํ๋ฉฐ ์ด ๊ฐ์ธ ๋ฐ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ ๊ฒ์
๋๋ค.
๋ ๋์ ์ค๋ฅ ๊ฐ์ง, ๋ ๋์ ์๋ ์์ฑ ๋ฐ ์ฝ๋ ์๋ ๋ฌธ์ํ์ ํจ๊ป ๋ ๋ช
ํํ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ณตํฉ๋๋ค.
๋๊ตฐ๊ฐ ๋น์ ์ ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด ์ฝ๋๊ฐ ํ๋ ์ผ์ ๋ ์ ์ดํดํ ๊ฒ์
๋๋ค.
๋ ๊ฐ์ ์๋ก์ด ํค์๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ๋ฐํ์๊ฒ ์ผ๋ง๋ ์ด๋ ค์ด ์ผ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๊ทธ๊ฒ์ ํ์คํ ํ์ดํ ์์คํ
๋ณด๋ค ํจ์ฌ ์ฌ์ธ ๊ฒ์ด๊ณ ๋ง์ ๊ฐ์น๋ฅผ ์ ๊ณตํ ๊ฒ์
๋๋ค.
๊ฐ๋ฐ ํ์ ๋๊ตฐ๊ฐ๊ฐ ๋์๊ฒ ๋ฌด์์ ํด์ผ ํ๋์ง์ ๋ํ ์ง์นจ์ ์ค ์ ์๋ค๋ฉด ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค!
๋น๊ณต๊ฐ ๋ฐ ๋ณดํธ๋ ํค์๋๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ํ ํ ๋ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์ด ์๋ค๋ฉด ๋ฐ๋ํ ์ ์์ต๋๋ค.
ํค์๋ ์ถ๊ฐ์ ๋ํ ๋ชจ๋ ๋ฐ๋๋ ์ด ์ฃผ์ ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
https://softwareengineering.stackexchange.com/questions/143736/why-do-we-need-private-variables
์ฐ๋ฆฌ๋ ์ฌ์ ํ GDscript๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์ง๋ง ๊ทธ ๊ณผ์ ์์ ๋ ๋์ ๊ฒ์ ๋ง๋ค์ง ์๊ฒ ์ต๋๊น?
_, __, ___ ๋ฑ์ ์ ํ์ ์ ์ํ๊ธฐ ์ํด ๋ณ์ ์ด๋ฆ์ ์ ๋์ฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋งํผ ์ด๋ฆฌ์์ ์ผ์
๋๋ค.
intAge, strName, bIsAlive... ๋ชจ๋ ๋๋ฝ๋ ์ธ์ด ๊ธฐ๋ฅ๋ง ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ GDScript๋ฅผ Python ๋๋ ๋ค๋ฅธ ์ธ์ด์ ๋น๊ตํ์ง ์๊ณ ๋ ๊ฐ๋ฐ์๋ ์ค๋ฌธ์ ์คํํ์ฌ ๋๋ค์๊ฐ ์ด ๋ ํค์๋๋ฅผ ์ํ๋์ง ๋๋ ์ํ์ง ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ;)
๊ธฐ๋ฅ์ด ๊ตฌํ๋๋ค๋ฉด C++ ๋ฐฉ์์ด ์ ํ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ชจ๋ ์ ์ธ ์์ ์๋ "private" ๋๋ "public" ํค์๋๋ C#์ ์ฝ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก C++ ๋ฐฉ์์ ์ข์ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๋ C++ ํ์ดํ ๊ตฌ๋ฌธ์ด ์๊ณ ๋ชจ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ private ํค์๋๋ฅผ ๋ง์ด ๋ณด์ง ์๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ์ค์ ์ถ๊ฐํ๊ฑฐ๋ ์ ์ค๋ก ์ด๋ํ์ง ์๊ณ ๋ณ์๋ฅผ private๋ก ์ค์ ํ ์ ์๋ ๊ฒ์ ๋ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค.
private var foo : String = "foobar"
๋ ๊ธฐ์กด export
๋ฐ onready
ํค์๋์ ์ฌ์ฉ๊ณผ๋ ์ผ์นํฉ๋๋ค.
๊ธฐ๋ฅ ์ ์์ด ์ด์ Godot ์ ์ ์ ์ฅ์์์ ์ถ์ ๋๊ธฐ ๋๋ฌธ์ https://github.com/godotengine/godot-proposals/issues/641 ์ ์ํด ๋ง๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ด๊ฒ์ด ์ด๋ฏธ ๋ซํ ์๊ณ ๋ณด๊ด๋์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง(์ด์ ๋ํด ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์ด๋ ค์ผ ํ๋์ง ํ์คํ์ง ์์) ์ก์ธ์ค ์์ ์๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋งค์ฐ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. Godot์ฉ ์ ๋ ธ๋ ์ ๋์จ์ ๋ง๋ค๊ณ ์ถ๊ณ ์ ๋ ธ๋์ ๋ ธ๋ ์ธ๋ถ์์ ์์ ๋์ด์๋ ์ ๋๋ ๋ด๋ถ ์ํ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ฐฉ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ชจ๋ฐฉํ๊ธฐ ์ํด ์ ํ ๋ฐ์ค์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ์ฌ์ ํ ์ก์ธ์ค ์์ ์์ ์ ์ฒด ์ง์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ์ง ๋ชปํฉ๋๋ค. ์ ์๊ฐ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋น์ ์ ๊ฐ์ฒด์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ ์ดํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๊ฝค ํฐ ๋ฌธ์ ์ ๋๋ค.