01 κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ΄ν΄
>κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ λ°°μ°λ μ΄μ
ν¨μλ₯Ό λ°°μΈ λμ κ°μ΄, μ¬λ¬ μ¬λμ΄ νλ‘κ·Έλ¨μ κ°λ°ν λ μ΄λ€ λ°©λ²μ΄ μ’μμ§μ λν κ³ λ―ΌμΌλ‘λΆν° μμ! πλ€λ₯Έ μ¬λμ΄ μμ±ν μ½λλ₯Ό μ¬μ©νκΈ° μν΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ¬μ©!
>κ°μ²΄μ ν΄λμ€
κ°μ²΄(object)
- μ€μνμ μ‘΄μ¬νλ μ€μ μ μΈ λ¬Όκ±΄ λλ κ°λ
- μμ±(attribute)μ νλ(action)μΌλ‘ ꡬμ±
- μ΄λ μμ±μ λ³μλ‘, νλμ ν¨μλ‘ μ μ
- ex) μΈκ³΅μ§λ₯ μΆκ΅¬ νλ‘κ·Έλ¨μ λ§λ λ€λ κ°μ
- → μ΄λ€ μ’ λ₯μ κ°μ²΄κ° νμνμ§ μκ°ν΄μΌ νλ€.
- → κ°μ²΄λ€μ μν μ€κ³λλ₯Ό μμ±ν΄μΌ νλ€. (= class)
ν΄λμ€(class)
- κ°μ²΄κ° κ°μ ΈμΌ ν κΈ°λ³Έ μ 보λ₯Ό λ΄μ μ½λλ‘ μΌμ’ μ μ€κ³λ μ½λ
- κ°μ²΄μ μ 보λ₯Ό ν΄λμ€μ λ΄κ³ , μ€μ μμ±λλ κ°μ²΄μλ κ°μ²΄μ μ΄λ¦μ ν λΉνλ€. (→ μ€μ λ‘ μμ±λλ κ°μ²΄ = instance)
02 νμ΄μ¬μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
>ν΄λμ€ κ΅¬ννκΈ°
μΆκ΅¬ μ μ ν΄λμ€λ₯Ό νμ΄μ¬μμ ꡬννκΈ°
*class μ μΈ
νμ΄μ¬μμμ ν΄λμ€ μ μΈμ κΈ°λ³Έ μ½λ ν νλ¦Ώμ λ€μκ³Ό κ°μ΅λλ€.
- λ¨Όμ μμ½μ΄μΈ classλ₯Ό μ½λμ 맨 μμ μ λ ₯ν©λλ€.
- κ·Έλ¦¬κ³ λ§λ€κ³ μ νλ ν΄λμ€ μ΄λ¦μ μμ±ν©λλ€.
- κ·Έ λ€μ μμλ°μμΌ νλ λ€λ₯Έ ν΄λμ€μ μ΄λ¦μ κ΄νΈ μμ λ£μ΅λλ€. (μ¬κΈ°μ μμμ΄λ κΈ°μ‘΄μ λ§λ ν΄λμ€μ νΉμ§μ κ·Έλλ‘ μ΄μ΄λ°μ μ¬μ©νλ κ²μ λ§ν©λλ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ₯μ μ€ νλμΈ μ¬μ¬μ©μ±μ μ©μ΄νκ² ν΄μ€λλ€. )
++νμ΄μ¬μμμ μλͺ κΈ°λ²++
λ³μμ ν¨μλ snack_case
ν΄λμ€λ CamelCase
*μμ±μ μ μΈ
μΆκ΅¬ μ μ ν΄λμ€λ₯Ό ꡬμ±ν΄λ³΄λλ‘ ν©μλ€.
- _ _ init _ _ ( ) : μμ±μ λν μ 보 μ μΈ
- μμμ½λ
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μ΄λΌλ κ°μ ν λΉνλ€λ λ»)
*ν¨μμ μ μΈ
μΆκ΅¬ μ μκ° νλ λμμΈ ‘λ±λ²νΈ κ΅μ²΄’λΌλ νλμ ꡬμ±ν΄λ³΄λλ‘ ν©μλ€.
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κ° μμ΄μΌλ§ μ€μ λ‘ μΈμ€ν΄μ€κ° μ¬μ©ν μ μλ ν¨μλ‘ μ μΈ)
*_μ μ°μ
_ 1κ° : μ΄νμ μ°μ΄μ§ μμ λ³μμ νΉλ³ν μ΄λ¦μ λΆμ¬νκ³ μΆμ§ μμ λ μ¬μ©
_ _ 2κ° : νΉμν μμ½ ν¨μλ λ³μλ₯Ό μλ―Έν¨
>μΈμ€ν΄μ€ μ¬μ©νκΈ°
μμ±λ ν΄λμ€λ₯Ό μΈμ€ν΄μ€λ‘ νΈμΆν΄ μ¬μ©νλ λ°©λ²μ μμλ΄ μλ€!
μΈμ€ν΄μ€ : ν΄λμ€μμ μ€μ μ μΈ λ°μ΄ν°κ° μ λ ₯λμ΄ μ¬μ©ν μ μλ ννμ κ°μ²΄
→ μ¬λ¬ κ°μ§ μ¬λ£κ° λ€μ΄κ° λΆμ΄λΉ΅ κ·Έ μ체
μμμ ν΄λμ€λ₯Ό ꡬνν λ SoccerPlayerλΌλ μ΄λ¦μΌλ‘ μμ±νμ΅λλ€.
μ΄ ν΄λμ€λ κ·Έμ κΈ°λ³Έ μ€κ³λ(λΆμ΄λΉ΅ ν) → μ μμ μ΄λ¦μ΄λ λ±λ²νΈκ° μμ§ ν λΉX
μ€μ λ‘ μΈμ€ν΄μ€λ₯Ό μ¬μ©νκΈ° μν΄μλ μ΄λ¬ν μ 보λ₯Ό ν λΉν μνλ‘ μ¬μ©ν΄μΌ ν©λλ€!
*μΈμ€ν΄μ€ νΈμΆ
- ν΄λμ€ μ΄λ¦μ νΈμΆ
- μμμ μ μνλ _ _ init _ _ ( ) ν¨μμ 맀κ°λ³μμ λ§ν¬μ΄ κ°μ μ λ ₯
- self λ³μμλ μλ¬΄λ° κ°λ ν λΉνμ§ μμ
- μ 체 SoccerPlayer μ½λ
# μ 체 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 = SoccerPlayer("Jinhyun", "MF", 10)
print("νμ¬ μ μμ λ±λ²νΈλ:", jinhyun.back_number)
jinhyun.change_back_number(5)
print("νμ¬ μ μμ λ±λ²νΈλ:", jinhyun.back_number)
νμ¬ μ μμ λ±λ²νΈλ: 10
μ μμ λ±λ²νΈλ₯Ό λ³κ²½νλ€: From 10 to 5
νμ¬ μ μμ λ±λ²νΈλ: 5
- 14νμμ jinhyun = SoccerPlayer("Jinhyun", "MF", 10) μ½λλ‘ μΈμ€ν΄μ€λ₯Ό μλ‘κ² λ§λ€μμ΅λλ€.
- λ§λ€μ΄μ§ μΈμ€ν΄μ€μΈ jinhyunμ name, position, back_mimberμ κ°κ° Jinhyiin, MF, 10μ΄ ν λΉλμμ΅λλ€. ν λΉλ κ°μ λ§λ€μ΄μ§ μΈμ€ν΄μ€μμ μ¬μ©νκΈ° μν΄μ jinhyun.back_number νμμΌλ‘ μΈμ€ν΄μ€ λ΄μ κ°μ νΈμΆνκ³ μμ΅λλ€.
βμ£Όμβ
μΈμ€ν΄μ€κ° μμ±λ νμλ ν΄λΉ μΈμ€ν΄μ€μ μ΄λ¦μΌλ‘ κ°μ ν λΉνκ±°λ ν¨μλ₯Ό λΆλ₯΄λ©΄ λμ§λ§, ν΄λμ€ λ΄μμλ selfλ‘ νΈμΆλλ€. μ¦, μμ±λ μΈμ€ν΄μ€μΈ jinhyunκ³Ό ν΄λμ€ λ΄ selfκ° κ°μ μν μ νλ κ²μ΄λ€.
*ν¨μ νΈμΆ
ν¨μλ₯Ό νΈμΆν λμλ μΈμ€ν΄μ€μ μ΄λ¦κ³Ό ν¨μλͺ μ¬μ©ν©λλ€.
μ μ½λμμ jihyun.change_back_number(5)λ₯Ό μ¬μ©ν΄ ν΄λμ€ λ΄μ ν¨μλ₯Ό μ¬μ©νμ΅λλ€. μ μ½λμ μ΄μ΄ print(jinhyun) μ μ λ ₯νλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όκ° μΆλ ₯λ©λλ€.
Hello, My name is Jinhyun. I play in MF in center.
>ν΄λμ€λ₯Ό μ¬μ©νλ μ΄μ
π§ μ΄μ²λΌ 볡μ‘ν κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ κ°λ μ μ μ¬μ©νλ κ²μΌκΉμ?
→ ν΅μ¬μ, μ½λλ₯Ό λ€λ₯Έ μ¬λμ΄ μμ½κ² μ¬μ©ν μ μλλ‘ μ€κ³νκΈ° μν¨μ λλ€!
- λ°μ΄ν°λ₯Ό λ³ννκ±°λ λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ λ±μ μν μ΄ νμν λ
- μ½λλ₯Ό μ’ λ μμ½κ² μ μΈνκ³ μ ν λ
03 κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§
π‘κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ κΈ°λ³Έ μ² νμ μ€μνμ λͺ¨λΈλ§νλ€λ κ°λ
>μμ
μμ(inheritance) : ν΄λμ€μ μ μλ μμ±κ³Ό λ©μλλ₯Ό μμ ν΄λμ€κ° λ¬Όλ €λ°μ μ¬μ©
→ μ΄λ¦ κ·Έλλ‘ λ¬΄μΈκ°λ₯Ό λ΄λ €λ°λ κ²μ λ»ν©λλ€.
→ μ΄λ₯Ό ν΅ν΄ μ½λμ μ¬μμμ±κ³Ό μ μ§λ³΄μμ±μ λμΌ μ μμ΅λλ€.
class ChildClass(object)
pass
κ΄νΈ μμ λ€μ΄κ° κ²μ΄ ChildClassμ λΆλͺ¨ ν΄λμ€μ λλ€. μ¬κΈ°μλ objectκ° λΆλͺ¨ ν΄λμ€.
object = νμ΄μ¬μμ μ¬μ©νλ κ°μ₯ κΈ°λ³Έ κ°μ²΄
νμ΄μ¬μ΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄κΈ° λλ¬Έμ λͺ¨λ λ³μκ° κ°μ²΄κ° λλ€!
>>> a = 'abc'
>>> type(a)
<class 'str'>
μ§κΈκΉμ§ λ¬Έμμ΄μ μλ£ν μ€ νλλΌκ³ μ μνκ³ λ¬Έμμ΄νμ΄λΌκ³ λΆλ μ§λ§ λ΄λΆμ μΌλ‘λ κ°μ²΄(class)λ‘ μ²λ¦¬λ κ²μ νμΈν μ μμ΅λλ€!
- μμ λ μμ보기
>>> class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
..
>>> class Korean(Person):
pass
...
>>> first_korean = Korean("Jeeun", 22)
>>> print(first_korean.name)
Jeeun
Person ν΄λμ€ μμ±
_ _ init _ _ ( ) ν¨μλ₯Ό λ§λ€μ΄ nameκ³Ό ageμ κ΄λ ¨λ μ 보λ₯Ό μ λ ₯νλλ‘ νμ΅λλ€.
Korean ν΄λμ€ μμ±
Person ν΄λμ€λ₯Ό μμλ°μμ΅λλ€. passλ λ³λμ λ΄μ© μμ΄ ν΄λμ€λ§ μ‘΄μ¬νλ€λ μλ―Έμ λλ€.
(λ³λμ μλ―Έ μμ΄ Korean ν΄λμ€ μΈμ€ν΄μ€λ₯Ό λ§λ κ²)
μμλ°μκΈ° λλ¬Έμ Person ν΄λμ€μμ μμ±ν λ³μλ₯Ό κ·Έλλ‘ μ¬μ©ν μ μλ κ²μ νμΈν μ μμ΅λλ€.
>λ€νμ±
λ€νμ±(polymorphism) : κ°μ μ΄λ¦μ λ©μλκ° λ€λ₯Έ κΈ°λ₯μ νλ κ²
[μμ] μΈν°λ·μμ λ°μ΄ν°λ₯Ό λͺ¨μΌλ νλ‘κ·Έλ¨, ν¬λ‘€λ¬
<λ¨κ³>
- λΆλͺ¨ ν¬λ‘€λ¬ ν΄λμ€ μ μνκ³ do_crawlingμ΄λΌλ ν¨μ μμ±
- Crawler ν΄λμ€λ₯Ό μμμμΌ NaverCrawlerμ DaumCrawlerλ₯Ό μμ± (μ΄ λ λ μμ ν΄λμ€λ λͺ¨λ do_crawling ν¨μλ₯Ό κ°κ² λ¨)
κ°μ μ΄λ¦μ΄μ§λ§ ꡬν λ΄μ©μ λ€λ₯΄λ€! = ꡬνλλ λ΄λΆ λ‘μ§μ μ°¨μ΄κ° μλ€! = λ€νμ±
>κ°μμ±
κ°μμ±(visibility) : κ°μ²΄μ μ 보λ₯Ό λ³Ό μ μλ λ 벨μ μ‘°μ νμ¬ κ°μ²΄μ μ 보 μ κ·Όμ μ¨κΈ°λ κ²
κ°μμ± = μΊ‘μν = μ 보 μλ
*νμ΄μ¬μμμ κ°μ²΄μ μ¬μ¬μ©
- μ¬μ¬μ©μ μν΄ κ° κ°μ²΄κ° λ¬΄μ¨ μν μ νλμ§ μμμΌ ν¨
- κ·Έλ¬λ μΈλΆμ μΈ κ΅¬ν λ΄μ©μ μ νμ μμ (λ¨μ§ μ¬μ©λ²λ§ νμ)
- μ¦, κ°μ²΄μ 맀κ°λ³μ μΈν°νμ΄μ€λ§ λͺ νν μλ©΄ μ¬μ©ν μ μλ€!
→ μΊ‘μν : κ°μ²΄μ μΈλΆ λ΄μ©μ λͺ¨λ₯Έ μ± κ°μ²΄μ μ¬μ©λ²λ§ μκ³ μ¬μ©νλ κ²
*μΊ‘μνλ₯Ό μ¬μ©ν΄ν νλ μ΄μ
- ν΄λμ€λ₯Ό μ€κ³ν λ ν΄λμ€ κ° κ°μ λ° μ 보 곡μ λ₯Ό μ΅μννμ¬ κ°λ³ ν΄λμ€κ° λ¨λ μΌλ‘λ μ λμν μ μλλ‘ ν΄μΌνκΈ° λλ¬Έ
- μ¬μ©μ μ μ₯μμλ μμΈν λ΄μ©μ λͺ¨λ₯΄λλΌλ μΈν°νμ΄μ€λ₯Ό μ΄ν΄νλ©΄ ν΄λμ€λ₯Ό μ½κ² μ¬μ©ν μ μκΈ° λλ¬Έ