15. [ํŒŒ์ด์ฌ] ์ •๋ณด์€๋‹‰๊ณผ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๊ตฌ์กฐ

2026. 3. 8. 11:33ยทPython & SQL/Python Basics
๐Ÿ’ก ๋ณธ ํฌ์ŠคํŒ…์€ ์ˆ˜์—… ๋‚ด์šฉ, ๊ต์žฌ, ChatGPT๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•œ ํ•™์Šต ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.
๊ธ€๊ณผ ๊ทธ๋ฆผ ๋“ฑ ๋ชจ๋“  ์ฝ˜ํ…์ธ ์˜ ์ •๋ฆฌ ๋ฐ ์ž‘์„ฑ์€ ๋ณธ ๋ธ”๋กœ๊ทธ์—์„œ ์ง์ ‘ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 


Python ๊ธฐ์ดˆ๋ถ€ํ„ฐ Streamlit ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๊นŒ์ง€ ์ •๋ฆฌํ•˜๋Š” ํ•™์Šต ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

์ด ๊ธ€์€ '15. [ํŒŒ์ด์ฌ] ์ •๋ณด์€๋‹‰๊ณผ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๊ตฌ์กฐ' ์ž…๋‹ˆ๋‹ค.

 

 

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธํ•˜๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค.

์ด๋ฅผ ์ •๋ณด์€๋‹‰(Information Hiding) ๋˜๋Š” ์บก์Аํ™”(Encapsulation) ๋ผ๊ณ  ํ•œ๋‹ค.

 

Python์—์„œ๋„ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ,

๋Œ€ํ‘œ์ ์œผ๋กœ ์ ‘๊ทผ ์ œํ•œ ๋ฐฉ์‹๊ณผ ํด๋ž˜์Šค ๋‚ด๋ถ€ ์†์„ฑ ๊ตฌ์กฐ(__dict__, __slots__) ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Python์—์„œ์˜ ์ •๋ณด์€๋‹‰ ๊ฐœ๋…๊ณผ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

 

 

์ •๋ณด์€๋‹‰(Encapsulation)

์ •๋ณด์€๋‹‰์€ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๊ณ ,

ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

class Account:

    def __init__(self, owner, balance):
        self.owner = owner
        self.balance = balance

 

์ด ๊ฒฝ์šฐ ์™ธ๋ถ€์—์„œ ์†์„ฑ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

acc = Account("Alice", 10000)

acc.balance = -5000

์ด์ฒ˜๋Ÿผ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ์ฒด์ง€ํ–ฅ์—์„œ๋Š” ๋ณดํ†ต ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์ ‘๊ทผ ์ œํ•œ ๋ฐฉ์‹

Python์—์„œ๋Š” ์†์„ฑ ์ด๋ฆ„ ์•ž์— ์–ธ๋”์Šค์ฝ”์–ด๋ฅผ ๋ถ™์—ฌ ์ ‘๊ทผ ์ˆ˜์ค€์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

public

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์†์„ฑ์€ public์ด๋‹ค.

self.balance

์™ธ๋ถ€์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

protected
์†์„ฑ ์ด๋ฆ„ ์•ž์— ์–ธ๋”์Šค์ฝ”์–ด ํ•˜๋‚˜(_) ๋ฅผ ๋ถ™์ธ๋‹ค.

self._balance

์ด๋Š” ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ด๋ผ๋Š” ์˜๋ฏธ์˜ ๊ด€๋ก€์ด๋ฉฐ, ์™„์ „ํžˆ ์ ‘๊ทผ์ด ์ฐจ๋‹จ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

private

์–ธ๋”์Šค์ฝ”์–ด ๋‘ ๊ฐœ(__)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด name mangling์ด ์ ์šฉ๋œ๋‹ค.

self.__balance

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

class Account:

    def __init__(self, balance):
        self.__balance = balance

 

์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

acc = Account(10000)

print(acc.__balance)

 

ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

_ํด๋ž˜์Šค์ด๋ฆ„__์†์„ฑ์ด๋ฆ„

 

์ฆ‰ ์‹ค์ œ๋กœ๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

print(acc._Account__balance)

Python์˜ private์€ ์™„์ „ํ•œ ์ ‘๊ทผ ์ œํ•œ์ด๋ผ๊ธฐ๋ณด๋‹ค ๋‚ด๋ถ€ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 


dict

Python ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์†์„ฑ์„ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์ €์žฅํ•œ๋‹ค.

์ด ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•  ๋•Œ __dict__ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ํด๋ž˜์Šค๋ฅผ ๋ณด์ž.

class Student:

    def __init__(self, name, score):
        self.name = name
        self.score = score

 

๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

s = Student("Matt", 90)

print(s.__dict__)

 

์ถœ๋ ฅ ์˜ˆ์‹œ

{'name': 'Alice', 'score': 90}

์ฆ‰ ๊ฐ์ฒด์˜ ์†์„ฑ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

 

 

slots

__dict__ ๊ตฌ์กฐ๋Š” ์œ ์—ฐํ•˜์ง€๋งŒ, ๋งŽ์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด __slots__์ด๋‹ค.

class Student:

    __slots__ = ("name", "score")

    def __init__(self, name, score):
        self.name = name
        self.score = score

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ์ฒด๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ์†์„ฑ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

s = Student("Matt", 90)

s.age = 20

์œ„ ์ฝ”๋“œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์ฆ‰ __slots__์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ๋‹ค.

  • ํ—ˆ์šฉ๋œ ์†์„ฑ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
  • ์†์„ฑ ๊ตฌ์กฐ ์ œํ•œ

 

 

์ •๋ณด์€๋‹‰๊ณผ ํด๋ž˜์Šค ๊ตฌ์กฐ

์ •๋ฆฌํ•˜๋ฉด Python์—์„œ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ตฌ๋ถ„ ์„ค๋ช…
public ๊ธฐ๋ณธ ์ ‘๊ทผ ๋ฐฉ์‹
protected _name ๊ด€๋ก€
private __name name magling
__dict__ ๊ฐ์ฒด ์†์„ฑ ์ €์žฅ ๊ตฌ์กฐ
__slots__ ์†์„ฑ ๊ตฌ์กฐ ์ œํ•œ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”

 

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋ฉด Python ๊ฐ์ฒด๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ •๋ฆฌ

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ •๋ณด์€๋‹‰์€ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์•ˆ์ •์ ์ธ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.

 

Python์—์„œ๋Š” ์™„์ „ํ•œ ์ ‘๊ทผ ์ œํ•œ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์ง€๋งŒ,

์–ธ๋”์Šค์ฝ”์–ด ๊ทœ์น™๊ณผ name mangling์„ ํ†ตํ•ด ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ๊ฐ์ฒด ์†์„ฑ์€ ๋‚ด๋ถ€์ ์œผ๋กœ __dict__์— ์ €์žฅ๋˜๋ฉฐ,

__slots__์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด ์†์„ฑ ๊ตฌ์กฐ๋ฅผ ์ œํ•œํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด Python ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ๋” ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” class method์™€ static method์˜ ์ฐจ์ด๋ฅผ ์‚ดํŽด๋ณธ๋‹ค.

 

 

'Python & SQL > Python Basics' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

17. [ํŒŒ์ด์ฌ] ํด๋กœ์ €์™€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ  (2) 2026.03.08
16. [ํŒŒ์ด์ฌ] class methos vs static method  (2) 2026.03.08
14. [ํŒŒ์ด์ฌ] ์ŠคํŽ˜์…œ ๋ฉ”์†Œ๋“œ์™€ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ  (2) 2026.03.08
13. [ํŒŒ์ด์ฌ] ์ƒ์†๊ณผ ํƒ€์ž… ํ™•์ธ  (0) 2026.03.08
12. [ํŒŒ์ด์ฌ] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด  (0) 2026.03.08
'Python & SQL/Python Basics' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 17. [ํŒŒ์ด์ฌ] ํด๋กœ์ €์™€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ
  • 16. [ํŒŒ์ด์ฌ] class methos vs static method
  • 14. [ํŒŒ์ด์ฌ] ์ŠคํŽ˜์…œ ๋ฉ”์†Œ๋“œ์™€ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
  • 13. [ํŒŒ์ด์ฌ] ์ƒ์†๊ณผ ํƒ€์ž… ํ™•์ธ
J. Son
J. Son
Petit à petit l'oiseau fait son nid.
  • J. Son
    Steady Study Log
    J. Son
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (170) N
      • Python & SQL (63)
        • Python Basics (21)
        • Python Problems (23)
        • Python Practice (11)
        • MySQL (1)
        • Git & GitHub (7)
      • ML & DL (7) N
      • Projects (5)
        • Project Portfolio (5)
      • AI Camp (4)
        • Camp Reflection (4)
      • Concept Notes (6)
        • Statistics & Stata (4)
        • Mathematics (2)
      • Archive (84)
        • Java (24)
        • R (1)
        • Languages (49)
        • Miscellaneous (10)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
    • WikiDocs
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Github
    ์ž๋ฐ”
    ํŒŒ์ด์ฌ streamlit
    MySQL
    ๋จธ์‹ ๋Ÿฌ๋‹
    ํŒŒ์ด์ฌ ํฌ๋กค๋ง
    ๊ฐ์ฒด
    Python
    ๋ถˆ์–ด ๊ณต๋ถ€
    share.streamlit.io
    python problem
    ๋ณตํ•ฉ๊ณผ๊ฑฐ
    machine learning
    Stata
    ํŒŒ์ด์ฌ ๋ฌธ์ œ
    ํ”„๋กœ์ ํŠธ ์˜ค์ผ๋Ÿฌ
    ์ ํ”„ํˆฌํŒŒ์ด์ฌ ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด
    ํŒŒ์ด์ฌ
    Le Petit Prince
    ๋งฅ git
    ๋ถˆ์–ด ๊ด€๊ณ„๋Œ€๋ช…์‚ฌ
    ์ ํ”„ํˆฌํŒŒ์ด์ฌ ์—ฐ์Šต๋ฌธ์ œ
    ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ํŒŒ์ด์ฌ 300์ œ
    python streamlit
    GIT
    ์–ด๋ฆฐ์™•์ž ํ”„๋ž‘์Šค์–ด
    passe compose
    ์–ด๋ฆฐ์™•์ž ๋ถˆ์–ด
    streamlit
    ํ”„๋ž‘์Šค์–ด ๊ณต๋ถ€
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
J. Son
15. [ํŒŒ์ด์ฌ] ์ •๋ณด์€๋‹‰๊ณผ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๊ตฌ์กฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”