μ°Έκ³ μλ£ : λ°μ΄ν°κ³Όνμ μν νμ΄μ¬ νλ‘κ·Έλλ°
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
νμ΅λͺ©ν
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ λ°°μ°λ μ΄μ μ λν΄ μμλ³Έλ€.
- κ°μ²΄μ ν΄λμ€μ κ°λ μ λν΄ νμ΅νλ€.
- ν΄λμ€λ₯Ό ꡬννκ³ μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ λ°©λ²μ μ΄ν΄νλ€.
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§μΈ μμ. λ€νμ±, κ°μμ±μ λν΄ νμ΅νλ€.
01 κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ λ°°μ°λ μ΄μ
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
⇒ λ΄κ° μλλΌ λ¨μ΄ λ§λ μ½λλ₯Ό μ¬μ¬μ©νκ³ μΆμ λ μ¬μ©νλ λνμ μΈ λ°©λ²
ν¨μμ²λΌ μ΄λ€ κΈ°λ₯μ ν¨μ μ½λλ‘ λ¬Άμ΄ λλ κ²μ΄ μλλΌ,
νλμ λ¨μΌ νλ‘κ·Έλ¨μ κ°μ²΄λΌκ³ νλ μ½λλ‘ λ§λ€μ΄ λ€λ₯Έ νλ‘κ·Έλλ¨Έκ° μ¬μ¬μ©ν μ μλλ‘ ν¨
- κ°μ²΄μ ν΄λμ€
- κ°μ²΄(object): μ€μνμ μ‘΄μ¬νλ μ€μ μ μΈ λ¬Όκ±΄ λλ κ°λ
- μμ±(attribute) : κ°μ²΄κ° κ°μ§κ³ μλ λ³μ(variable)
- νλ(action) - κ°μ²΄κ° μ€μ λ‘ μλμν€λ ν¨μ(fuction), λ©μλ
- κ°μ²΄(object): μ€μνμ μ‘΄μ¬νλ μ€μ μ μΈ λ¬Όκ±΄ λλ κ°λ
02 νμ΄μ¬μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
- ν΄λμ€ κ΅¬ννκΈ°
νμ΄μ¬μμ ν΄λμ€λ₯Ό μ μΈνκΈ° μν κΈ°λ³Έ μ½λ ν νλ¦Ώ:
λ¨Όμ μμ½μ΄μΈ classλ₯Ό μ½λμ 맨 μμ μ λ ₯νκ³ , λ§λ€κ³ μ νλ ν΄λμ€ μ΄λ¦μ μμ±νλ€. κ·Έλ€μμΌλ‘ μμλ°μμΌ νλ λ€λ₯Έ ν΄λμ€μ μ΄λ¦μ κ΄νΈ μμ λ£λλ€.
π νμ΄μ¬μμ μμ£Ό μ¬μ©νλ μλͺ κΈ°λ²
κ°μ‘΄κ³Ό λ€λ₯΄κ² 첫 κΈμμ μ€κ° κΈμκ° λλ¬Έμ
νμ΄μ¬λΏλ§ μλλΌ λͺ¨λ μ»΄ν¨ν° νλ‘κ·Έλλ° μΈμ΄μμ λ³μ, ν΄λμ€, ν¨μλͺ μ μ§λ μλͺ κΈ°λ²μ΄ μλ€.
- μμ±μ μ μΈ
μμ±μ λν μ 보λ₯Ό μ μΈνκΈ° μν΄μλ _ init_()λΌλ μμ½ ν¨μλ₯Ό μ¬μ©νλ€.
νμ΄μ¬ ν΄λμ€μμλ λͺ κ°μ μμ½ ν¨μκ° μλλ°. λνμ μΈ κ²μ΄ iinit()κ° μλ€.
μ΄λ¬ν ν¨μλ€μ μ½μλ ννμ μμ μ μνμμΌ μ€λ€.
class SoccerPlayer(object):
def__init__(self, name, position, back_number)οΌ
self .name = name
self.position = position
self .back_number = back_number
→ init() ν¨μλ μ΄ ν΄λμ€μμ μ¬μ©ν λ³μλ₯Ό μ μνλ ν¨μμ΄λ€.
init() ν¨μμ 첫 λ²μ§Έ 맀κ°λ³μλ λ°λμ self λ³μλ₯Ό μ¬μ©ν΄μΌ νλ€.
self λ³μλ ν΄λμ€μμ μμ±λ μΈμ€ν΄μ€μ μ κ·Όνλ μμ½μ΄μ΄λ€. (μΈμ€ν΄μ€λ₯Ό μ§μ νλ λ³μ)
self λ€μ 맀κ°λ³μλ€μ μ€μ λ‘ ν΄λμ€κ° κ°μ§ μμ±(μΆκ΅¬ μ μμ μ΄λ¦, ν¬μ§μ , λ±λ²νΈ λ±)μ΄λ€.
μ΄ κ°λ€μ μ€μ λ‘ μμ±λλ μΈμ€ν΄μ€μ ν λΉλλ€. (ν λΉλλ μ½λ: self.name = name)
μμ±λ μΈμ€ν΄μ€μ μλ name λ³μμ 맀κ°λ³μλ‘ μ λ ₯λ nameμ΄λΌλ κ°μ ν λΉνλ€λ λ»μ΄λ€.
ν΄λμ€μ λ³μλ ‘self.λ³μμ΄λ¦’μΌλ‘ init() ν¨μμμ μμ λ‘κ² μμ±ν μ μλ€.
- ν¨μμ μ μΈ
ν¨μλ μ΄ ν΄λμ€κ° ν μ μλ λ€μν λμμ μ μν μ μλ€.
class SoccerPlayer(object):
def change_back_number(self, new_number):
print("μ μμ λ±λ²νΈλ₯Ό λ³κ²½νλ€: From %d to %d" % (self .back_number, new_number))
self.back_number = new_number
→ ν¨μμ μ΄λ¦μ μ°κ³ 맀κ°λ³μλ₯Ό μ¬μ©
μ¬κΈ°μ κ°μ₯ ν° μ°¨μ΄μ μ selfλ₯Ό 맀κ°λ³μμ λ°λμ λ£μ΄μΌ νλ€λ κ²μ΄λ€.
selfκ° μμ΄μΌλ§ μ€μ λ‘ μΈμ€ν΄μ€κ° μ¬μ©ν μ μλ ν¨μλ‘ μ μΈλλ€.
κ·Έ μΈμλ μΌλ°μ μΈ ν¨μμ μ¬μ© λ°©λ²κ³Ό κ°λ€.
- _μ μ°μ
μΌλ°μ μΌλ‘ νμ΄μ¬μμ _μ μ°μμ κ°μμ λ°λΌ μ¬λ¬ κ°μ§λ‘ λλ μ μλ€.
for _ in range(10)οΌ
printC’Hello, World")
→ _ 1κ°λ μ΄νλ‘ μ°μ΄μ§ μμ λ³μμ νΉλ³ν μ΄λ¦μ λΆμ¬νκ³ μΆμ§ μμ λ μ¬μ©
λ λ€λ₯Έ μ©λλ‘ _ 2κ°λ₯Ό μ¬μ©νλ©΄ νΉμν μμ½ ν¨μλ λ³μλ₯Ό μλ―Ένλ€.
λ€μν μ©λκ° μμΌλ _μ νΉμν μ©λμ λν΄μλ μΈμ§ν΄λλ κ²μ΄ μ’μ
- μΈμ€ν΄μ€ μ¬μ©νκΈ°
μμ±λ ν΄λμ€λ₯Ό μΈμ€ν΄μ€λ‘ νΈμΆν΄ μ¬μ©νλ λ°©λ²
μΈμ€ν΄μ€: ν΄λμ€μμ μ€μ μ μΈ λ°μ΄ν°κ° μ λ ₯λμ΄ μ¬μ©ν μ μλ ννμ κ°μ²΄
λ¨Όμ ν΄λμ€ μ΄λ¦μ νΈμΆνκ³ , μμμ μ μνλ __init_() ν¨μμ 맀κ°λ³μμ λ§μΆμ΄ κ°μ μ λ ₯νλ€.
μ¬κΈ°μ self λ³μμλ μλ¬΄λ° κ°λ ν λΉνμ§ μλλ€. (ν¨μμμ λ°°μ΄ μ΄κΉκ° μ§μ κ³Ό κ°μ κ°λ )
# μ 체 SoccerPlayer μ½λ
class SoccerPlayer(object)οΌ
def __init__(self, name, position, back_number)οΌ
self.name = name
self.position =position
self.back_number = back_number
def change_back_number(self, new_number)οΌ
print("μ μμ λ±λ²νΈλ₯Ό λ³κ²½νλ€: From %d to %d" % (self.back_number, new_number))
self.back_number = new_number
def __str__(self)οΌ
return "Hello, My name is %s. I play in %s in center." % (self .name, self.position)
# SoccerPlayerλ₯Ό μ¬μ©νλ instance μ½λ
jinhyun = SoccerPlayerC’Jinhyun", "MF", 10)
print("νμ¬ μ μμ λ±λ²νΈλ:,\\ j inhyun .back_number)
jinhyun.change_back_number(5)
print("νμ¬ μ μμ λ±λ²νΈλ:", jinhyun.baμc_number)
- ν΄λμ€λ₯Ό μ¬μ©νλ μ΄μ
μμ μ΄ λ§λ μ½λκ° λ°μ΄ν° μ μ₯λΏ μλλΌ λ€λ₯Έ μν μ ν΄μΌ ν λ μμ μ μ½λλ₯Ό λ€λ₯Έ μ¬λμ΄ μμ½κ² μ¬μ©ν μ μλλ‘ μ€κ³νκΈ° μν¨μ΄λ€.
-> λ°μ΄ν°λ₯Ό λ³ννκ±°λ λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ λ±μ μν μ΄ νμν λκ° μλ€.
μ΄κ²μ 리μ€νΈμ ν¨μλ‘ κ°κ° λ§λ€μ΄ 곡μ νλ κ²λ³΄λ€ νλμ κ°μ²΄λ‘ μμ±ν΄ λ€λ₯Έ μ¬λλ€μκ² λ°°ν¬νλ€λ©΄ μμ μ΄ ν¨μ¬ λ μ¬μμ§λ€.
++ μ½λλ₯Ό μ’ λ μμ½κ² μ μΈν μ μλ€λ μ₯μ λ μλ€.
λ¨μν μ΄μ°¨μ 리μ€νΈλ‘ μ μΈν μ μλ κ²μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ κ°λ μ μ μ©μμΌ μ’ λ λͺ νν κ² μ μ₯λ λ°μ΄ν°λ₯Ό νμΈν μ μλ€. νΉν λ€λ₯Έ μ¬λλ€μ΄ κ²°κ³Όλ₯Ό μ¬μ©ν λ μ΄ λ°μ΄ν°κ° 무μμ μν λ°μ΄ν°μΈμ§λ₯Ό λͺ νν μ μ μλ€.
03 κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§
- μμ
μ΄λ¦ κ·Έλλ‘ λ¬΄μμΈκ°λ₯Ό λ΄λ €λ°λ κ²μ λ»νλ€.
→ λΆλͺ¨ ν΄λμ€λ‘λΆν° κ°κ³Ό λ©μλλ₯Ό λ¬Όλ €λ°μ μμ ν΄λμ€λ₯Ό μμ±νλ€λ λ»μ΄λ€.
μ¦, μμμ΄ λΆλͺ¨μ νΉμ±μ κ·Έλλ‘ ν¬ν¨ν μ± μμ±λλ κ²μ΄λ€.
class Person(object)οΌ
pass
→ classλΌλ μμ½μ΄ λ€μμ ν΄λμ€λͺ μΌλ‘ Personμ μ°κ³ () μμ objectλ₯Ό μ λ ₯νμλ€.
μ¬κΈ°μ objectκ° Person ν΄λμ€μ λΆλͺ¨ ν΄λμ€μ΄λ€.
μ¬μ€ objectλ νμ΄μ¬μμ μ¬μ©νλ κ°μ₯ κΈ°λ³Έ κ°μ²΄μ΄λ©°. νμ΄μ¬ μΈμ΄κ° κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ―λ‘ λͺ¨λ λ³μλ κ°μ²΄μ΄λ€.
- λ€νμ±
κ°μ μ΄λ¦μ λ©μλκ° λ€λ₯Έ κΈ°λ₯μ νλ κ²μ λ§νλ€. λ€νμ±μ μ¬μ©νλ μ΄μ : ν΄λΉ ν΄λμ€μ μ¬μ©μ μ μ₯μμλ ν¨μμ μ΄λ¦λ§ μλ©΄ κ°μ ννλ‘ μ¬μ©ν μ μμ§λ§. ν΄λμ€ μ κ°λ°μ μ μ₯μμλ λ΄λΆμ μΈ κ΅¬νμ κ° ν΄λμ€λ³ λ€λ₯΄κ² κ°λ°ν νμκ° μλ€. μ΄λ₯Ό λ€νμ± μ΄λΌκ³ νλλ°, λ€νμ±μ μ¬μ©νλ©΄ νλ‘κ·Έλ¨μ μμ±ν λ μ¬μ©μκ° μ’ λ μ½κ² ν΄λμ€λ₯Ό μ¬μ© ν μ μλ€.
- κ°μμ±
κ°μ²΄μ μ 보λ₯Ό λ³Ό μ μλ λ 벨μ μ‘°μ νμ¬ κ°μ²΄μ μ 보 μ κ·Όμ μ¨κΈ°λ κ²
μ’ λ μ€μν ν΅μ¬ κ°λ μ **μΊ‘μν(encapsulation)**μ **μ 보 μλ (information hiding)**μ΄λ€. νμ΄μ¬κ°μ²΄μ 맀κ°λ³μ μΈν°νμ΄μ€λ§ λͺ νν μλ©΄ μ¬μ©ν μ μλ€.
- μΊ‘μν : κ°μ²΄μ μΈλΆ λ΄μ©μ λͺ¨λ₯Έ μ± κ°μ²΄μ μ¬μ©λ²λ§ μκ³ μ¬μ©νλ€.
- → ν΄λμ€λ₯Ό μ€κ³ν λ ν΄λμ€ κ° κ°μ λ° μ 보 곡μ λ₯Ό μ΅μννμ¬ κ°λ³ ν΄λμ€κ° λ¨λ μΌλ‘λ μ λμν μ μλλ‘ νκΈ° μν΄ μ¬μ©
- μ 보 μλ : μΈλΆμμ μ½λ λ΄λΆλ₯Ό λ³Ό μ μκ² νκΈ° μν΄ λ΄λΆμ μ 보λ₯Ό μ¨κΈ΄λ€.
⇒ λ λ€ μΈλΆμμ μ½κ² μ¬μ©νκ² νκ³ , μ½λμ μΈλΆμ μΈ λ΄μ©μ λͺ¨λ₯΄κ² νλ€
κ°μμ±μ΄λΌλ μ΄λ¦μΌλ‘ μ μ©μν€κ³ . μ 보 μλμ μ΄λ»κ² ν κ²μΈκ°λ₯Ό μ½λμμ μ‘°μ