Python์ init, all ๋?
๋ค์ด๊ฐ๋ฉฐ
Python์ผ๋ก ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ํจํค์ง๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ ์ฐธ์กฐํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๊ณ ๊ทธ ๊ณผ์ ์์
__init__.py๋ฅผ ํตํด ํด๊ฒฐํ์์ต๋๋ค.__init__.py์ ์ ๋ฆฌํ๊ธฐ ์ํด ์์ฑํฉ๋๋ค.
__init__.py๋?
__init__.pyํ์ผ์ ํด๋น ๋๋ ํฐ๋ฆฌ๊ฐ ํจํค์ง์ ์ผ๋ถ์์ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.- ๋๋ ํฐ๋ฆฌ์
__init__.pyํ์ผ์ด ์๋ค๋ฉด ํจํค์ง๋ก ์ธ์๋์ง ์์ ์๋ ์์ต๋๋ค.
Example
- src ๋๋ ํ ๋ฆฌ์
todo.py, tests ๋๋ ํ ๋ฆฌ์test_todo.py๊ฐ ์กด์ฌํ์ง๋ง pytest ๊ฒฐ๊ณผ ์คํจํ์์ต๋๋ค.

Pylint ํ๋ฉด

Pytest ๊ฒฐ๊ณผํ๋ฉด

init.py ์์ฑ ํ ๋ชจ์ต

Pytest ๊ฒฐ๊ณผํ๋ฉด

__all__๋?
- ํน์ ๋๋ ํฐ๋ฆฌ์ ๋ชจ๋์
*๋ฅผ ์ด์ฉํ์ฌ importํ ๋์๋ ๋ค์๊ณผ ๊ฐ์ด ํด๋น ๋๋ ํฐ๋ฆฌ์__init__.pyํ์ผ์__all__์ด๋ผ๋ ๋ณ์๋ฅผ ์ค์ ํ๊ณ importํ ์ ์๋ ๋ชจ๋์ ์ ์ํด ์ฃผ์ด์ผ ํฉ๋๋ค. __all__๋ก ์ ์ํ์ง ์์ผ๋ฉด ์ธ์๋์ง ์์ต๋๋ค.
Example
>>> from game.sound import *
>>> echo.echo_test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'echo' is not defined__all__ ์ ์
# __init__.py
__all__ = ['echo']๊ฒฐ๊ณผํ๋ฉด
>>> from game.sound import *
>>> echo.echo_test()
echo