Na čo slúži súbor __init__.py?

Na čo slúži súbor __init__.py v zdrojovom adresári jazyka Python?

Riešenie

Kedysi bol povinnou súčasťou balíka (starý balík pred verziou 3.3 "regular package", nie novší balík 3.3+ "namespace package").

Tu'je dokumentácia.

Python definuje dva typy balíkov, bežné balíky a balíky menného priestoru. Bežné balíky sú tradičné balíky, aké existovali v Pythone 3.2 a starších verziách. Bežný balík je zvyčajne implementovaný ako adresár obsahujúci súbor __init__.py. Keď sa importuje regulárny balík, tento súbor __init__.py sa implicitne spustí a objekty, ktoré definuje, sa viažu na mená v priestore názvov balíka. Súbor __init__.py môže obsahovať rovnaký kód jazyka Python, aký môže obsahovať akýkoľvek iný modul, a Python pri jeho importe pridá modulu niektoré ďalšie atribúty.

Stačí však kliknúť na odkaz, obsahuje príklad, ďalšie informácie a vysvetlenie balíkov v priestore názvov, teda takých balíkov, ktoré nemajú súbor __init__.py.

Komentáre (20)

Súbor __init__.py spôsobí, že Python bude adresáre, ktoré ho obsahujú, považovať za moduly.

Okrem toho je to prvý súbor, ktorý sa načíta do modulu, takže ho môžete použiť na spustenie kódu, ktorý chcete spustiť pri každom načítaní modulu, alebo na určenie podmodulov, ktoré sa majú exportovať.

Komentáre (0)

Uľahčuje importovanie iných súborov jazyka python. Keď tento súbor umiestnite do adresára (povedzme stuff), ktorý obsahuje iné py súbory, potom môžete urobiť niečo ako import stuff.other.

root\
    stuff\
         other.py

    morestuff\
         another.py

Bez tohto súboru __init__.py vo vnútri adresára stuff by ste nemohli importovať súbor other.py, pretože Python nevie, kde sa nachádza zdrojový kód súboru stuff a nedokáže ho rozpoznať ako balík.

Komentáre (1)