ν¨ν€μ§(Package)
νμ΄μ¬μμ ν¨ν€μ§λ μλ°μ λμΌνκ² νμΌμ κ³μΈ΅κ΅¬μ‘°λ₯Ό λνλΈλ€. κ·Έλ¦¬κ³ λ€λ₯Έ νμΌμ μ μλμ΄ μλ ν΄λμ€λ₯Ό νμ©ν λλ λͺ¨λννλ‘ λΆλ¬μ¨λ€.
λ€μκ³Ό κ°μ΄ λλ ν 리 κ΅¬μ‘°κ° μλ€κ³ κ°μ νμ.
person/
__init__.py
male/
__init__.py
run.py
female/
__init__.py
run.py
Female/run.pyμ test_run ν¨μλ₯Ό μ€νν΄λ³΄μ. λ€μκ³Ό κ°μ΄ μ€νν μ μλ€.
import person.female.run
person.female.run.test_run()
Person.Female.runμ ννλ‘ λͺ¨λμ λΆλ¬μμ λͺ¨λμ λ©μλλ₯Ό νΈμΆν μ μλ€.
from person.female import run
run.test_run()
fromκ³Ό importλ‘ μ€νν μλ μλ€.
from person.female.run import test_run
test_run()
μ΄λ²μλ test_runν¨μλ§ importν΄μ λ¨λ μΌλ‘ μ€ννλ€.
__init__.py
__init__.py νμΌμ ν΄λΉ λλ ν°λ¦¬κ° ν¨ν€μ§μ μΌλΆμμ μλ €μ£Όλ μν μ νλ€. λ§μ½ Person, Male, Female λ± ν¨ν€μ§μ ν¬ν¨λ λλ ν°λ¦¬μ __init__.py νμΌμ΄ μλ€λ©΄ ν¨ν€μ§λ‘ μΈμλμ§ μλλ€.
python3.3 λ²μ λΆν°λ __init__.py νμΌμ΄ μμ΄λ ν¨ν€μ§λ‘ μΈμνλ€(PEP 420). νμ§λ§ νμ λ²μ νΈνμ μν΄ __init__.py νμΌμ μμ±νλ κ²μ΄ μμ ν λ°©λ²μ΄λ€.
λν, __init__.py νμΌμ ν¨ν€μ§μ κ΄λ ¨λ μ€μ μ΄λ μ΄κΈ°ν μ½λλ₯Ό ν¬ν¨ν μ μλ€. λ€μν λ°©λ²μΌλ‘ νμ©ν μ μλλ°, μλμ λͺ κ°μ§ μλ₯Ό λ€μ΄ μ΄ν΄λ³΄μ.
ν¨ν€μ§ λ³μ λ° ν¨μ μ μ
ν¨ν€μ§ μμ€μμ λ³μμ ν¨μλ₯Ό μ μν μ μλ€. μλ₯Ό λ€μ΄, game ν¨ν€μ§μ __init__.pyμμ κ³΅ν΅ λ³μλ ν¨μλ₯Ό μ μν μ μλ€.
# person.py
AGE = 35
def print_age_info():
print(f"My age is {AGE}.")
μ΄λ κ² ν¨ν€μ§μ __init__.py νμΌμ μ μλ λ³μμ ν¨μλ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μλ€.
>>> import person
>>> print(person.age)
35
>>> person.print_age_info()
My age is 35.
ν¨ν€μ§ λ΄ λͺ¨λμ 미리 import
__init__.pyμμ ν¨ν€μ§ λ΄μ λ€λ₯Έ λͺ¨λμ 미리 importνμ¬ ν¨ν€μ§λ₯Ό μ¬μ©νλ μ½λμμ κ°νΈνκ² μ κ·Όν μ μκ² νλ€.
# person.py
from .male.run import test_run
AGE = 35
def print_age_info():
print(f"My age is {AGE}.")
μ΄μ ν¨ν€μ§λ₯Ό μ¬μ©νλ μ½λμμλ λ€μκ³Ό κ°μ΄ κ°νΈνκ² Male ν¨ν€μ§λ₯Ό ν΅ν΄ test_run ν¨μλ₯Ό μ¬μ©ν μ μλ€.
>>> import male
>>> male.test_run()
ν¨ν€μ§ μ΄κΈ°ν
__init__.pyμμ ν¨ν€μ§κ° μ²μ λΆλ¬μμ§ λ μ€νλμ΄μΌ νλ μ½λλ₯Ό μμ±ν μ μλ€. μλ₯Ό λ€μ΄, λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ΄λ μ€μ νμΌ λ‘λμ κ°μ μμ μ μνν μ μλ€.
# person.py
from .male.run import test_run
AGE = 35
def print_age_info():
print(f"My age is {AGE}.")
# Package Initialize
print("init!!!")
μ΄λ κ² νλ©΄ ν¨ν€μ§κ° μ²μ import λ λ μ΄κΈ°ν μ½λκ° μ€νλλ€.
>>> import person
init!!!
person ν¨ν€μ§μ μ΄κΈ°ν μ½λλ person ν¨ν€μ§μ νμ λͺ¨λμ ν¨μλ₯Ό μ¬μ©ν κ²½μ°μλ μ€νλλ€.
>>> from person.male.run import test_run
init!!!
λ¨, μ΄κΈ°ν μ½λλ νλ² μ€νλ νμλ λ€μ importλ₯Ό μννλλΌλ λ€μ μ€νλμ§ μλλ€. μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ΄ person ν¨ν€μ§λ₯Ό importν νμ νμ λͺ¨λμ λ€μ import νλλΌλ μ΄κΈ°ν μ½λλ μ²μ νλ²λ§ μ€νλλ€.
>>> import person
init!!!
>>> from person.male.run import test_run
>>>
__all__
μ΄λ²μλ λ€μμ λ°λΌ ν΄ λ³΄μ.
>>> from person.female import *
init!!!
>>> run.test_run()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'run' is not defined
λΆλͺ person.female ν¨ν€μ§μμ λͺ¨λ κ²(*)μ importνμμΌλ―λ‘ run λͺ¨λμ μ¬μ©ν μ μμ΄μΌ ν κ² κ°μλ° run μ΄λΌλ μ΄λ¦μ΄ μ μλμ§ μμλ€λ μ΄λ¦ μ€λ₯(NameError)κ° λ°μνλ€.
μ΄λ κ² νΉμ λλ ν°λ¦¬μ λͺ¨λμ *λ₯Ό μ¬μ©νμ¬ importν λμλ λ€μκ³Ό κ°μ΄ ν΄λΉ λλ ν°λ¦¬μ __init__.py νμΌμ __all__ λ³μλ₯Ό μ€μ νκ³ importν μ μλ λͺ¨λμ μ μν΄ μ£Όμ΄μΌ νλ€.
# female/__init__.py
__all__ = ['run']
μ¬κΈ°μμ __all__μ΄ μλ―Ένλ κ²μ female λλ ν°λ¦¬μμ * κΈ°νΈλ₯Ό μ¬μ©νμ¬ importν κ²½μ° μ΄κ³³μ μ μλ run λͺ¨λλ§ importλλ€λ μλ―Έμ΄λ€.
μ°©κ°νκΈ° μ¬μ΄λ° from person.female.run import * λ __all__κ³Ό μκ΄μμ΄ λ¬΄μ‘°κ±΄ importλλ€. μ΄λ κ² __all__κ³Ό μκ΄μμ΄ λ¬΄μ‘°κ±΄ importλλ κ²½μ°λ from a.b.c import * μμ fromμ λ§μ§λ§ νλͺ©μΈ cκ° λͺ¨λμΈ κ²½μ°μ΄λ€.
μμ κ°μ΄ __init__.py νμΌμ λ³κ²½ν ν μ λ€μ μ€νμν€λ©΄ μ μ μλνλ€.
>>> from person.female import *
init!!!
>>> run.test_run()
μ λ κ²½λ‘κ° μλ μλ κ²½λ‘λ‘λ λΉμ°ν import κ°λ₯νλ€.
# female/run.py
from ..male.run import echo_run
def gogo():
print("female run")
echo_run()
>>>> female run
>>>> run
μΆμ²: μ ν ν¬ νμ΄μ¬(https://wikidocs.net/1418)
'νλ‘κ·Έλλ° μΈμ΄ > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νμ΄μ¬ ννμ λͺ¨λ κ² (0) | 2023.12.03 |
---|---|
νμ΄μ¬ 리μ€νΈ(list)μ λͺ¨λ κ² (1) | 2023.12.02 |
νμ΄μ¬ λ¬Έμμ΄(string)μ λͺ¨λ κ² (1) | 2023.12.01 |
νμ΄μ¬μ μμ κ°μ²΄μ§ν₯ μΈμ΄λ€? (0) | 2023.05.28 |
νμ΄μ¬μμ json νμ±νκΈ° (0) | 2023.05.18 |
λκΈ