๋“ค์–ด๊ฐ€๋ฉฐ

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

Reference