λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
🀷🏼‍♀️ Etc.../- C, C++, Python, Android

Python κ³ κΈ‰: 객체와 클래슀(1) μž…λ¬Έν•˜κΈ°

by Wonit 2019. 12. 8.

λ‚˜λŠ” 첫 μ–Έμ–΄λ₯Ό Java둜 μ‹œμž‘ν–ˆκΈ° λ•Œλ¬Έμ— 객체와 ν΄λž˜μŠ€μ— λŒ€ν•œ 이해도가 쑰금 μžˆλŠ” νŽΈμ΄λ‹€.

 

λ‹€λ₯Έ μ–Έμ–΄λ₯Ό ν•˜μ˜€λ“ , ν•˜μ§€ μ•Šμ•˜λ“  μ—¬λŸ¬λΆ„λ“€μ€ 객체λ₯Ό 많이 μ‚¬μš©ν•˜μ˜€λ‹€.

 

μ²˜μŒμ—λ„ 말 ν–ˆλ“―μ΄ νŒŒμ΄μ¬μ€ λͺ¨λ“  것이 κ°μ²΄λΌλŠ” 점을 생각해본닀면, 객체에 λŒ€ν•˜μ—¬ ν•™μŠ΅ν•˜λŠ” 것이 그닀지 큰 어렀움이 μ—†κΈΈ λ°”λž€λ‹€.

객체와 ν΄λž˜μŠ€λž€ 무엇인가?

 

κ°μ²΄λž€

 

μœ„μ˜ μ‚¬μ§„μœΌλ‘œ 보자면, μš°λ¦¬κ°€ λ§Œμ•½ μžλ™μ°¨ 곡μž₯을 μš΄μ˜ν•œλ‹€κ³  치자.

κ·Έλ ‡λ‹€λ©΄ λ‹€μŒκ³Ό 같은 μˆœμ„œλ‘œ μžλ™μ°¨ 곡정 운영이 될 것이닀.

 

  • μžλ™μ°¨ ν‹€ 생성 - > (클래슀)
  • μžλ™μ°¨ 틀은 μ—¬λŸ¬ μžλ™μ°¨λ₯Ό 찍기 μœ„ν•΄μ„œ μžλ™μ°¨ λͺ¨μ–‘μ˜ 주물을 μ΄μš©ν•œλ‹€.
  • μžλ™μ°¨ ν‹€λ‘œ μžλ™μ°¨ 생성 - > (λ©”μ„œλ“œ)
  • μžλ™μ°¨ ν‹€λ‘œ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” κΈ°λŠ₯의 μ˜΅μ…˜λ“€μ„ μΆ”κ°€ν•˜μ—¬ μžλ™μ°¨λ₯Ό μƒμ„±ν•œλ‹€.
  • μžλ™μ°¨ 판맀 - > (객체)
  • 같은 κΈ°μ’…μ΄μ§€λ§Œ 각각 λ‹€λ₯Έ μ°¨ 번호의 μžλ™μ°¨κ°€ μƒμ‚°λœλ‹€.

 

이런 μ‹μœΌλ‘œ μƒμ‚°ν•˜λ©΄ 업무 νš¨μœ¨μ„±μ΄ μ¦κ°€ν•˜λŠ”λ°, μ΄λŸ¬ν•œ 방식이 λ°”λ‘œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œμ˜ 객체와 λ©”μ„œλ“œ, ν΄λž˜μŠ€κ°€ λœλ‹€.

 

클래슀 μ„ μ–Έν•˜κΈ° : class

class Person():
    pass

 

μ˜ˆμ‹œλ‘œμ¨ Personμ΄λΌλŠ” 클래슀λ₯Ό λ§Œλ“€κ³  pass둜 아무것도 μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ” 클래슀λ₯Ό λ§Œλ“€μ—ˆλ‹€. 이제 이 클래슀λ₯Ό κ°μ²΄ν™”μ‹œμΌœλ³΄μž.

 

class Person():
    pass

someone = Person()

 

someone = Person()μ΄λΌλŠ” μ½”λ“œκ°€ μˆ˜ν–‰λ˜λ©΄μ„œ Person()ν΄λž˜μŠ€λ‘œλΆ€ν„° Person의 객체가 μƒμ„±λ˜κ³  someoneμ΄λΌλŠ” λ³€μˆ˜μ— 객체λ₯Ό ν• λ‹Ήν•˜μ˜€λ‹€.

 

λ©”μ„œλ“œ : def

λ©”μ„œλ“œ : λ©”μ†Œλ“œ λ˜λŠ” 멀버 ν•¨μˆ˜λŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 객체과 κ΄€λ ¨λœ μ„œλΈŒ 루틴 이며 데이터와 멀버 λ³€μˆ˜μ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ„ κ°–λŠ”λ‹€. 클래슀 기반 μ–Έμ–΄μ—μ„œ 클래슀 내뢀에 μ •μ˜λ˜μ–΄ μžˆλ‹€. λ©”μ†Œλ“œλŠ” ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜κ³ μžˆμ„λ•Œ ν΄λž˜μŠ€μ—μ„œ μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ™€ κ΄€λ ¨λœ λ™μž‘μ„ μ •μ˜ν•œλ‹€.

 

μ‚¬μ „μ μ˜λ―Έλ‘œ λ©”μ„œλ“œμΈλ° λ„ˆλ¬΄ 말이 μ–΄λ ΅λ‹€... μ‰½κ²Œ 말해 λ©”μ„œλ“œλž€ 클래슀 내에 μ •μ˜λœ ν•¨μˆ˜λ₯Ό λœ»ν•œλ‹€.

이제 μ‚¬μš© 방법에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž

 

μ‚¬μš© 방법

def λ©”μ„œλ“œμ΄λ¦„(self):
    κ΅¬ν˜„ λͺΈμ²΄
self : 객체의 μΈμŠ€ν„΄μŠ€ κ·Έ 자체λ₯Ό μ˜λ―Έν•˜λ©°, Java λ˜ν•œ selfκ°€ μ‘΄μž¬ν•˜μ§€λ§Œ ν”„λ‘œκ·Έλž˜λ¨Έ λˆˆμ— 보이지 μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ Python은 ν΄λž˜μŠ€μ—μ„œ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•  λ•Œ κΌ­ selfλ₯Ό λͺ…μ‹œν•΄μ•Ό ν•˜κ³  κ·Έ λ©”μ†Œλ“œλ₯Ό 뢈러올 λ–„λŠ” selfκ°€ μžλ™μœΌλ‘œ μ „λ‹¬λœλ‹€.

 

호좜 방법은 클래슀λͺ….λ©”μ„œλ“œμ˜ ν˜•μ‹μœΌλ‘œ ν˜ΈμΆœν•œλ‹€.

 

객체 μ΄ˆκΈ°ν™” λ©”μ„œλ“œ : __init__ (μƒμ„±μž)

 

객체 μ΄ˆκΈ°ν™” λ©”μ„œλ“œλž€. 객체λ₯Ό 생성할 생성 μ‹œμ μ— μˆ˜ν–‰λ˜μ–΄μ•Όν•  νŠΉλ³„ν•œ μ½”λ“œλ₯Ό μΌμ»«λŠ”λ°, λ‹€μŒ μ˜ˆμ œμ™€ 같이 생성 μ‹œμ μ—
κ°μ²΄μ—κ²Œ 이름을 λΆ€μ—¬ν•΄μ£ΌλŠ” 객체λ₯Ό λ§Œλ“€μ–΄λ³΄μž.

 

class Person():
    def __init__(self, name):
        self.name = name


student = Person('jang')

print(student.name)
>>
jang

 

  • Person클래슀 생성
  • κ·Έλƒ₯ 클래슀λ₯Ό μƒμ„±ν–ˆλ‹€.

 

  • def __init__(self, name): 객체 μ΄ˆκΈ°ν™” ν•¨μˆ˜ 생성
  • self μΈμžλŠ” 객체 μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” 역할을 ν•œλ‹€. ν΄λž˜μŠ€μ—μ„œ __init__()을 μ •μ˜ν•  λ•Œ 첫 번째 λ§€κ°œλ³€μˆ˜λ‘œ κΌ­ selfμ—¬μ•Ό ν•œλ‹€.

 

  • student = Person('jang') 객체 ν• λ‹Ή
  • student에 Person()ν΄λž˜μŠ€μ— 객체λ₯Ό ν• λ‹Ήν•˜μ˜€κ³ , λ§€κ°œλ³€μˆ˜ name 에 jang둜 λ„˜κ²¨μ£Όμ—ˆλ‹€.

λŒ“κΈ€