ํ์ด์ฌ์ ์๋ฃ ๊ตฌ์กฐ์ธ ํด๋์ค(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์ ๋ํ ์ ๊ทผ๋ ๊ฐ๋ฅํ๋ค.
'Programming > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Selenium๊ณผ BeautifulSoup๋ฅผ ํ์ฉํ ํฌ๋กค๋ง (1) | 2020.10.19 |
---|---|
BeautifulSoup๋ฅผ ํ์ฉํ ํฌ๋กค๋ง (0) | 2020.10.10 |