ν΄λμ€(Class)μ μΈμ λ° λ©μλ(Method)
νμ΄μ¬μ μλ£ κ΅¬μ‘°μΈ ν΄λμ€(Class)μ μΈμ λ° λ©μλ(Method) λν΄ μμλ³Ό κ²μ΄λ€. λ€λ£° λ΄μ©μΌλ‘λ λ€μκ³Ό κ°λ€.
1. self μΈμ
2. __init__() λ©μλ
3. super() λ©μλ
1. self μΈμ
In:
class test_class:
def test_fun_1():
print('Function 1')
def test_fun_2(self):
print('Function 2')
t_c = test_class()
t_c.test_fun_1()
Out:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-0e104e8d4d89> in <module>
1 t_c = test_class()
----> 2 t_c.test_fun_1()
TypeError: test_fun_1() takes 0 positional arguments but 1 was given
In:
t_c.test_fun_2()
Out:
function 2
β· t_c.test_fun_2()λ₯Ό νΈμΆνλ©΄ selfλ νΈμΆμ μ΄μ©νλ μΈμ€ν΄μ€(Instance)λ‘ λ°λλ€. λ°λΌμ test_fun_2()μ νμν selfμ λν μΈμ€ν΄μ€λ₯Ό λ°λ‘ μ€ νμκ° μλ€. λ°λ©΄, t_c.test_fun_1()μ νΈμΆνλ©΄ νΈμΆμ μ΄μ©ν μΈμ€ν΄μ€κ° ν¨μλ‘ λμ΄κ°μ§λ§, ν¨μμ νμν μΈμλ μκΈ° λλ¬Έμ μλ¬κ° λ°μνλ€.
In:
class test_class:
test_var = True
def test_fun(self):
self.test_var = False
t_c = test_class()
print(t_c.test_var)
t_c.test_fun()
print(t_c.test_var)
Out:
True
False
β· t_cμμ ν΄λμ€ λ΄ λ³μ test_varλ‘ μ κ·Όμ΄ κ°λ₯νλ€. t_c.test_fun()λ₯Ό νΈμΆνλ©΄ t_cμ test_varμ΄ Falseλ‘ λ°λλ€. λ€λ₯Έ test_classμ μΈμ€ν΄μ€λ₯Ό μμ±ν λ, test_varμ κ·Έλλ‘ Trueμ΄λ€. μΈμ€ν΄μ€μ test_varλ§ λ°λμμ λΏ, ν΄λμ€ μ체μ test_varμ λ°λμ§ μλλ€.
2. __init__() λ©μλ
In:
class test_class:
def __init__(self, input):
self.test_var = input
t_c = test_class('Good!')
print(t_c.test_var)
Out:
Good!
In:
t_c = test_class()
Out:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-28-89584f52547a> in <module>
----> 1 t_c = test_class()
TypeError: __init__() missing 1 required positional argument: 'input'
β· __init__()μ μΈμ€ν΄μ€λ₯Ό λ§λ€ λ νμ μ€νλλ€. λ°λΌμ test_classμ μΈμ€ν΄μ€λ₯Ό λ§λ€κΈ° μν΄μλ inputμ λν μΈμλ₯Ό λ°λμ μ£Όμ΄μΌνλ€. μμ κ°μ΄ μλ¬κ° λ°μνλ€.
3. super() λ©μλ
In:
class parent_class:
parent_var = True
def parent_function(self):
print('Parent function')
class child_class(parent_class):
def __init__(self):
super(child_class, self)
c_c = child_class()
c_c.parent_function()
print(c_c.parent_var)
Out:
Parent function
True
β· ν΄λμ€λ₯Ό μ μν λ, μμλ°κ³ μ νλ ν΄λμ€λ₯Ό ν΄λΉ ν΄λμ€μ μΈμλ‘ μ£Όμ΄μΌ νλ€. κ·Έ λ€μ super()μ λν μ μλ₯Ό ν¨μΌλ‘μ¨ μμλ°κ³ μ νλ ν΄λμ€μ λ³μ λ° ν¨μλ₯Ό μ΄μ©ν μ μλ€.
β· child_classμ super(child_class, self)λ₯Ό μ€νν¨μΌλ‘μ¨ parent_classμ λν μ κ·Όμ΄ κ°λ₯ν΄μ§λ€. λ°λΌμ c_cμμ parent_classμ ν¨μμΈ parent_function()λ₯Ό μ¬μ©ν μ μλ€. λν, parent_classμ λ³μμ parent_varμ λν μ κ·Όλ κ°λ₯νλ€.