ν΄λμ€λ κ°μ²΄λ₯Ό νννκΈ° μν λ¬Έλ²μ΄λ€.
μλ₯Ό λ€μ΄ κ²μμ λ§λ λ€κ³ νλ©΄ κΈ°μ¬, λ§λ²μ¬, κΆμ, μ¬μ λ± μ§μ λ³λ‘ ν΄λμ€λ₯Ό λ§λ€μ΄μ ννν μ μλ€. μ΄λ κ² νΉμ ν κ°λ μ΄λ λͺ¨μμΌλ‘ μ‘΄μ¬νλ κ²μ κ°μ²΄(object)λΌκ³ νλ€. νλ‘κ·Έλλ°μΌλ‘ μ΄λ¬ν κ°μ²΄λ₯Ό λ§λ€ λ μ¬μ©νλ κ²μ΄ ν΄λμ€μ΄λ€.
μΊλ¦ν°μ 체λ ₯, λ§λ, 물리 곡격λ ₯, μ£Όλ¬Έλ ₯ λ±μ λ°μ΄ν°λ₯Ό μμ±(attribute)λΌκ³ ν μ μκ³ ,
λ² κΈ°, μ°λ₯΄κΈ° λ±μ κΈ°λ₯μ λ©μλ(method)λΌκ³ ν μ μλ€.
μ΄λ κ² νλ‘κ·Έλλ°νλ λ°©λ²μ κ°μ²΄μ§ν₯(object oriented) νλ‘κ·Έλλ°μ΄λΌκ³ νλ€.
ν΄λμ€λ classμ ν΄λμ€ μ΄λ¦μ μ§μ νκ³ :
(μ½λ‘ )μ λΆμΈ λ€ λ€μ μ€λΆν° def
λ‘ λ©μλλ₯Ό μμ±νλ©΄ λλ€. μ¬κΈ°μ λ©μλλ ν΄λμ€ μμ λ€μ΄μλ ν¨μλ₯Ό λ»νλ€.
λ©μλμ 첫 λ²μ§Έ λ§€κ°λ³μλ λ°λμ self
λ₯Ό μ§μ ν΄μΌ νλ€.
class ν΄λμ€μ΄λ¦:
def λ©μλ(self):
μ½λ
classλ₯Ό μ μΈν λ class μ΄λ¦μ μκΈμλ₯Ό λλ¬Έμλ‘ νμ¬ μ¬μ©ν΄μΌ νλ€. ν λ¨μ΄ μ΄μμΌλ‘ μ΄λ£¨μ΄μ Έ μλ€λ©΄ λ°μ€ μμ΄ λͺ¨λ λ¨μ΄λ₯Ό λ€ λΆμ΄λ κ° λ¨μ΄μ μκΈμλ λλ¬Έμλ‘ ν΄μ λ¨μ΄λ₯Ό ꡬλΆνκ² λλ€.
κ°λ¨ν μ¬λ ν΄λμ€λ₯Ό λ§λ€μ΄μ μ μ©ν΄λ³΄μ.
class Person:
def greeting(self):
print('Hello')
# μΈμ€ν΄μ€ = ν΄λμ€()
james = Person()
PersonμΌλ‘ λ³μ jamesλ₯Ό λ§λ€μλλ° μ΄ jamesκ° Personμ μΈμ€ν΄μ€μ΄λ€.
ν΄λμ€λ νΉμ κ°λ μ ννλ§ ν λΏ μ¬μ©μ νκΈ° μν΄μλ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌ νλ€.
λ©μλλ ν΄λμ€κ° μλλΌ μΈμ€ν΄μ€λ₯Ό ν΅ν΄ νΈμΆνλ€.
μλμ κ°μ΄ μΈμ€ν΄μ€ λ€μ .
(μ )μ λΆμ΄κ³ λ©μλλ₯Ό νΈμΆνλ©΄ λλ€.
# μΈμ€ν΄μ€.λ©μλ()
>>> james.greeting()
Hello
μ΄λ κ² μΈμ€ν΄μ€λ₯Ό ν΅ν΄ νΈμΆνλ λ©μλλ₯Ό μΈμ€ν΄μ€ λ©μλλΌκ³ νλ€.
μΈμ€ν΄μ€μ κ°μ²΄μ μ°¨μ΄μ ?
μ¬μ€ μΈμ€ν΄μ€μ κ°μ²΄λ κ°μ κ²μ λ»νλ€.
λ³΄ν΅ κ°μ²΄λ§ μ§μΉν λλ κ·Έλ₯ κ°μ²΄(object)λΌκ³ λΆλ₯΄μ§λ§ ν΄λμ€μ μ°κ΄μ§μ΄μ λ§ν λλ― μΈμ€ν΄μ€(instance)λΌκ³ λΆλ₯Έλ€.a = list(range(10)) b = list(range(20))
리μ€νΈ λ³μ a, bκ° μμΌλ©΄ a, bλ κ°μ²΄μκ³Ό λμμ list ν΄λμ€μ μΈμ€ν΄μ€λΌκ³ ν μ μλ€.
μμ±(attribute)μ λ§λ€ λλ __init__
λ©μλ μμμ self.μμ±
μ κ°μ ν λΉνλ€.
class ν΄λμ€μ΄λ¦:
def __init__(self):
self.μμ± = κ°
μμ λ§λ Person
ν΄λμ€μ __init__
λ©μλλ₯Ό μΆκ°ν΄ 보μ.
class Person:
def __init__(self):
self.hello = 'μλ
νμΈμ.'
def greeting(self):
print(self.hello)
james = Person()
james.greeting()
# μ€ν κ²°κ³Ό
μλ
νμΈμ.
__init__
λ©μλλ james = Person()
μ²λΌ ν΄λμ€μ ( )
(κ΄νΈ)λ₯Ό λΆμ¬μ μΈμ€ν΄μ€λ₯Ό λ§λ€ λ νΈμΆλλ νΉλ³ν λ©μλμ΄λ€.
π μ€μ
__init__
λ©μλ μμμ λ§λ λ€.self
μ .
(μ )μ λΆμΈ λ€ κ°μ ν λΉνλ€.μ λ€λ‘
__
(λ°μ€ λ κ°)κ° λΆμ λ©μλλ νμ΄μ¬μ΄ μλμΌλ‘ νΈμΆν΄μ£Όλ λ©μλλ‘ μ€νμ λ©μλ(special method) λλ λ§€μ§ λ§€μλ(magic method)λΌκ³ λΆλ₯Έλ€.
__init__
λ©μλμ self
λ€μμ κ°μ λ°μ λ§€κ°λ³μλ₯Ό μ§μ νλ€.
κ·Έλ¦¬κ³ λ§€κ°λ³μλ₯Ό self.μμ±
μ λ£μ΄μ€λ€.
class ν΄λμ€μ΄λ¦:
def __init__(self, λ§€κ°λ³μ1, λ§€κ°λ³μ2):
self.μμ±1 = λ§€κ°λ³μ1
self.μμ±2 = λ§€κ°λ³μ2
Person
ν΄λμ€λ‘ μΈμ€ν΄μ€λ₯Ό λ§λ€ λ μ΄λ¦, λμ΄, μ£Όμλ₯Ό λ°μ보μ.
class Person:
def __init__(self, name, age, address):
self.hello = 'μλ
νμΈμ.'
self.name = name
self.age = age
self.address = address
def greeting(self):
print('{0} μ λ {1}μ
λλ€.'.format(self.hello, self.name))
__init__
λ©μλλ₯Ό 보면 self
λ€μμ name, age, address
λ₯Ό μ§μ νλ€.
κ·Έλ¦¬κ³ λ©μλ μμμλ self.name = name
μ²λΌ λ§€κ°λ³μλ₯Ό κ·Έλλ‘ self
μ λ£μ΄μ μμ±μΌλ‘ λ§λ€μλ€.
greeting
λ©μλλ μΈμ¬λ₯Ό νκ³ μ΄λ¦μ μΆλ ₯νλλ‘ μμ νλλ° μ΄λ¦μ μΆλ ₯νκΈ° μν΄μ name
μμ±μ μ κ·Όν μ μλλ‘ self.name
μ μ¬μ©νμλ€.
ν΄λμ€ μμμ μ κ·Όν λλ
self.μμ±
νμμΌλ‘ μ κ·Όνμ§λ§
ν΄λμ€ λ°κΉ₯μμ μμ±μ μ κ·Όν λλμΈμ€ν΄μ€.μμ±
νμμΌλ‘ μ κ·Όνλ€.
maria = Person('λ§λ¦¬μ', 20, 'μμΈμ μμ΄κ΅¬ λ°ν¬λ')
maria.greeting() # μλ
νμΈμ. μ λ λ§λ¦¬μμ
λλ€.
print('μ΄λ¦:', maria.name) # λ§λ¦¬μ
print('λμ΄:', maria.age) # 20
print('μ£Όμ:', maria.address) # μμΈμ μμ΄κ΅¬ λ°ν¬λ
Person
μ κ΄νΈ μμ μ΄λ¦, λμ΄, μ£Όμλ₯Ό μ½€λ§λ‘ ꡬλΆν΄μ λ£μ λ€μ λ³μ(maria)μ ν λΉνλ€.
μ΄ κ³Όμ μ κ±°μΉλ©΄ μ΄λ¦μ 'λ§λ¦¬μ', λμ΄λ 20, μ£Όμλ 'μμΈμ μμ΄κ΅¬ λ°ν¬λ'μΈ maria μΈμ€ν΄μ€κ° λ§λ€μ΄μ§λ€.
μ€ν κ²°κ³Ό
μλ
νμΈμ. μ λ λ§λ¦¬μμ
λλ€.
μ΄λ¦: λ§λ¦¬μ
λμ΄: 20
μ£Όμ: μμΈμ μμ΄κ΅¬ λ°ν¬λ
λΉκ³΅κ° μμ±(private attribute)λ ν΄λμ€ λ°κΉ₯μμλ μ κ·Όν μ μκ³ ν΄λμ€ μμμλ§ μ¬μ©ν μ μλ€.
λΉκ³΅κ° μμ±μ __μμ±
κ³Ό κ°μ΄ μ΄λ¦μ΄ __
(λ°μ€ λ κ°)λ‘ μμν΄μΌ νλ€.
__μμ±__
μ²λΌ λ°μ€ λ κ°κ° μ μμ μμ λλ λΉκ³΅κ° μμ±μ΄ μλλ―λ‘ μ£Όμν΄μΌ νλ€.
class Person:
def __init__(self, name, age, address, wallet):
self.name = name
self.age = age
self.address = address
self.__wallet = wallet # λ³μ μμ __λ₯Ό λΆμ¬μ λΉκ³΅κ° μμ±μΌλ‘ λ§λ¦
maria = Person('λ§λ¦¬μ', 20, 'μμΈμ μμ΄κ΅¬ λ°ν¬λ', 10000)
maria.__wallet -= 10000 # ν΄λμ€ λ°κΉ₯μμ λΉκ³΅κ° μμ±μ μ κ·Όνλ©΄ μλ¬κ° λ°μν¨