Za kaj je namenjen __init__.py
v izvornem imeniku Pythona?
Včasih je bil obvezen del paketa (stari paket pred izdajo 3.3 "regular package" in ne novejši paket 3.3+ "namespace package").
Python definira dve vrsti paketov, običajne pakete in pakete imenskega prostora. Običajni paketi so tradicionalni paketi, kot so obstajali v Pythonu 3.2 in prejšnjih različicah. Navadni paket se običajno izvaja kot imenik, ki vsebuje datoteko
__init__.py
. Ko uvozimo običajni paket, se ta datoteka__init__.py
implicitno izvede, predmeti, ki jih definira, pa so vezani na imena v imenskem prostoru paketa. Datoteka__init__.py
lahko vsebuje enako kodo Pythona kot kateri koli drug modul, Python pa bo modulu ob uvozu dodal nekaj dodatnih atributov.
Toda kliknite povezavo, saj vsebuje primer, več informacij in razlago paketov z imenskim prostorom, torej paketov brez datoteke __init__.py
.
Datoteka __init__.py
poskrbi, da Python obravnava imenike, ki jo vsebujejo, kot module.
Poleg tega je to prva datoteka, ki se naloži v modul, zato jo lahko uporabite za izvajanje kode, ki jo želite zagnati ob vsakem nalaganju modula, ali za določanje podmodulov, ki se izvozijo.
Olajša uvoz drugih datotek python. Ko to datoteko postavite v imenik (recimo stuff), ki vsebuje druge py datoteke, lahko naredite nekaj takega, kot je import stuff.other.
root\
stuff\
other.py
morestuff\
another.py
Brez te datoteke __init__.py
v imeniku stuff ne bi mogli uvoziti datoteke other.py, ker Python ne ve, kje je izvorna koda datoteke stuff, in je ne more prepoznati kot paket.