Godot: GDScript์˜ ๊ฐœ์ธ ๋ณ€์ˆ˜ ๋˜๋Š” ํ•จ์ˆ˜

์— ๋งŒ๋“  2018๋…„ 04์›” 25์ผ  ยท  47์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: godotengine/godot

๋ฌธ์ œ ์„ค๋ช…:
์ผ๋ถ€ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ํŠน์ • ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ๋กœ์ปฌ์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋” ๋‚˜์€ ์ฝ”๋“œ ๊ตฌ์กฐ์— ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ํ‚ค์›Œ๋“œ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์ง€๊ธˆ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

archived discussion feature proposal gdscript

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ด๋ฏธ ๋‹ซํ˜€ ์žˆ๊ณ  ๋ณด๊ด€๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ(์ด์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์—ด๋ ค์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ) ์•ก์„ธ์Šค ์ˆ˜์ •์ž๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Godot์šฉ ์ƒˆ ๋…ธ๋“œ ์• ๋“œ์˜จ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๊ณ  ์ƒˆ ๋…ธ๋“œ์— ๋…ธ๋“œ ์™ธ๋ถ€์—์„œ ์ˆ˜์ •๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋‚ด๋ถ€ ์ƒํƒœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์„ ํ–‰ ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์•ก์„ธ์Šค ์ˆ˜์ •์ž์˜ ์ „์ฒด ์ง€์ ์ธ ์•ก์„ธ์Šค๋ฅผ ๋ฐฉ์ง€ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ๊ฐœ์ฒด์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๊ฝค ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  47 ๋Œ“๊ธ€

๋ณ€์ˆ˜์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ 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์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ™•์‹คํžˆ ํ”„๋กœ ๊ฐœ์ธ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค.

  1. ์˜ˆ, ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ์•ž์— _๋ฅผ ์‚ฌ์šฉํ•˜๋Š” private์— ๋Œ€ํ•œ ๊ทœ์น™์ด ์žˆ์ง€๋งŒ ๊ฐ€์ƒ ๊ธฐ๋Šฅ์—๋„ ๋™์ผํ•œ ๊ทœ์น™์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ‘์ค„์ด ํ‘œ์‹œ๋˜๋ฉด "์ ˆ๋Œ€๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋งŒ์ง€์ง€ ๋งˆ์‹ญ์‹œ์˜ค!"๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” "ํ•ด๋‹น ๊ธฐ๋Šฅ ๋ฎ์–ด์“ฐ๊ธฐ!". ์†”์งํžˆ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

  2. ํ˜ผ์ž ๋˜๋Š” ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์•„์ฃผ ์ž‘์€ ํŒ€์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๊ณ  ์–ด๋–ค ๊ธฐ๋Šฅ์ด ๋‚ด๋ถ€ ์ „์šฉ์ธ์ง€ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ํ•˜์ง€๋งŒ ํŒ€์ด ์„ฑ์žฅํ• ์ˆ˜๋ก ์ด๊ฒƒ์€ ์ ์  ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ํ•ญ์ƒ ์Šค์Šค๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์ž‘์€ ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ •๋ง๋กœ ์›ํ•ฉ๋‹ˆ๋‹ค. ์˜๋„ํ•˜์ง€ ์•Š์€ ๋™์ž‘๊ณผ ๋ฒ„๊ทธ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ทธ๋“ค์€ ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์ด๋Ÿฌํ•œ ์ผ๋“ค์ด ๋” ํฐ ํŒ€์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  3. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์™„์„ฑ. ์ €๋Š” ์ˆ˜์—…์ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค.
    ๊ทธ๋ƒฅ '.'๋ผ๊ณ  ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์— ์–ด๋–ค ๊ธฐ๋Šฅ์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋ญ”๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ๋“ค๋ฆฌ๋ฉด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    ์–ด์จŒ๋“  ํ˜ธ์ถœ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋กœ ๋ณต์žกํ•˜์ง€ ์•Š๋‹ค๋ฉด ํ›จ์”ฌ ๊นจ๋—ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ - ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ - ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด _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๊ฐ€ ํ—ˆ์šฉ๋˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์ž…๋‹ˆ๊นŒ? ๋“ฑ.

https://github.com/godotengine/godot/issues/24785๋ฅผ ์ฐธ์กฐ

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์ €๊ฒƒ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋‹ค๊ฐ€ ์•„๋ฌด ์ž‘์—…๋„ ํ•˜์ง€ ์•Š๋Š” setter๋ฅผ ์ •์˜ํ•˜๋ฉด ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋™์ผํ•œ ๋ณ€์ˆ˜์— ์ƒˆ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ์ธ์‡„ํ•˜๋ ค๊ณ  ํ•ด๋„ ์›๋ž˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์‡„. ์ •๋ง ์‚ฌ์ ์ธ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ์ถฉ๋ถ„ํžˆ ๊ฐ€๊น๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค...

๊ณต๊ฐœ๋กœ ํ‘œ์‹œ๋˜๊ณ  ๋ฐฉ๊ธˆ ์ˆ˜์ •ํ•œ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ํžŒํŠธ๊ฐ€ ์ „ํ˜€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?
์ด ๋ฐฉ๋ฒ•์„ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋””๋ฒ„๊น… ์ฝ”๋“œ๋ฅผ ์žฌ๋ฏธ์žˆ๊ฒŒ ์ฆ๊ธฐ์‹ญ์‹œ์˜ค.

๋นˆ setter ๋Œ€์‹  ์˜ค๋ฅ˜๋ฅผ ์ธ์‡„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ค์ œ๋กœ ๊ทธ ์ฝ”๋“œ ์ค„์„ ์ ์ค‘ํ–ˆ์„ ๋•Œ ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ผ์„ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์—ฌ์ „ํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ ์—ฌ์ „ํžˆ ๊ณต๊ฐœ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๋‹จ์ผ ๊ฐœ์ธ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
ํผํŒ… private ๊ทธ ๋ณ€์ˆ˜์˜ ์•ž์—์ด ๋ฐฉ๋ฒ•์€ ์งง์€ ์ฝ”๋“œ์˜ ์ถ”๊ฐ€ ๋ผ์ธ์„ ํ•„์š”๋กœํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋‚ด๊ฐ€ ์ž…๋ ฅ ํ•  ๋•Œ ๊ฑฐ์ง“ ๊ถŒ๋ฆฌ๋ฅผ ์•ก์„ธ์Šค ๋‚˜๋ฅผ ๋ง‰์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

GDScript๋Š” ๋™์  ์–ธ์–ด๋ผ๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‚˜์—๊ฒŒ ์ƒ๋‹นํžˆ C++์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. C++๋กœ ์ฝ”๋“œ ์ž‘์„ฑ์—์„œ GDScript๋กœ ์ „ํ™˜ํ•  ๋•Œ ์•ก์„ธ์Šค ์ˆ˜์ •์ž๊ฐ€ ๊ทธ๋ฆฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ฆ‰, GDScript๋Š” ์‹ค์ œ๋กœ OOP์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ง€์›์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋งŒ ํ›‘์–ด๋ณด์•˜์ง€๋งŒ, ์ด๋ฆ„ ์•ž์— ๋ฐ‘์ค„์ด ๋ถ™์€ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ ์ž๋™ ์™„์„ฑ์—์„œ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ฐ€์ƒ ๊ธฐ๋Šฅ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ๋”ฐ๋ผ์„œ ์•„๋งˆ๋„ ๊ด€๊ณ„์—†์ด ๋‚˜ํƒ€๋‚˜์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ‘์ค„์€ ๊ฐ€์ƒ ๊ธฐ๋Šฅ์—๋„ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ฐ€์ƒ ๊ธฐ๋Šฅ๋„ ๊ณต๊ฐœํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ถ„๋ช…ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋…ธ๋“œ/๊ฐ์ฒด์—์„œ๋งŒ ๋ฐ‘์ค„ ์ ‘๋‘์‚ฌ๊ฐ€ ๋ถ™์€ ํ•จ์ˆ˜๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ self/base์— ๋Œ€ํ•œ ํ˜ธ์ถœ์— ๋Œ€ํ•ด์„œ๋Š” ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ œ์•ˆ์€ ๊ฐ€์ƒ ๊ธฐ๋Šฅ์— ๋‹จ์ผ ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•˜๊ณ  "๋น„๊ณต๊ฐœ" ๊ธฐ๋Šฅ์— ์ด์ค‘ ์„ ํ–‰ ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ€์ƒ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ž๋™ ์™„์„ฑ์—์„œ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€์ˆ˜๋ฅผ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์˜ ์•ก์„ธ์Šค _attribute_๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ _name_์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค variable ์™€ _variable ๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋˜ํ•œ UNIX ํŒŒ์ผ ์ด๋ฆ„์˜ ์ ๊ณผ๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒ๋‹นํžˆ ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‚ด ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค

  • ๋น„๊ณต๊ฐœ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ "__"
  • "__"๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ์ž๋™ ์™„์„ฑ์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • "private func x()"๋Š” "func __x()"์˜ ๊ตฌ๋ฌธ ์„คํƒ•์ž…๋‹ˆ๋‹ค.

์œ„๋Š” "__" ์ ‘๋‘์‚ฌ๊ฐ€ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ทธ ์‹œ์Šคํ…œ์ด ์ด์ƒ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ 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

  1. GDScript๋Š” Python์ด ์•„๋‹™๋‹ˆ๋‹ค.
  2. ๋…ผ๋ฆฌ์— ๋”ฐ๋ผ ์ƒ์ˆ˜๋„ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(var CONSTANT = 1).
  3. ๋ชจ๋“  ์‚ฌ๋žŒ์ด __ ์‚ฌ์šฉ์„ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” 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 ์„ ์œ„ํ•ด ๋งˆ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰