За какво служи __init__.py?

За какво се използва __init__.py в директорията с изходния код на Python?

Решение

Преди това той беше задължителна част от пакет (стар, преди версия 3.3 "обикновен пакет", а не по-нов 3.3+ "пакет с пространство от имена").

Ето и документацията.

Python дефинира два вида пакети - обикновени пакети и пакети с пространство от имена. Обикновените пакети са традиционните пакети, каквито съществуваха в Python 3.2 и по-рано. Обикновеният пакет обикновено се реализира като директория, съдържаща файл __init__.py. Когато се импортира редовен пакет, този файл __init__.py се изпълнява имплицитно и обектите, които той дефинира, се свързват с имена в пространството от имена на пакета. Файлът __init__.py може да съдържа същия код на Python, който може да съдържа всеки друг модул, а Python ще добави някои допълнителни атрибути към модула, когато той бъде импортиран.

Но просто щракнете върху връзката, тя съдържа пример, повече информация и обяснение на пакетите с пространство от имена, видът пакети без __init__.py.

Коментари (20)

Файлът __init__.py кара Python да третира директориите, които го съдържат, като модули.

Освен това това е първият файл, който се зарежда в даден модул, така че можете да го използвате, за да изпълните код, който искате да се изпълнява всеки път, когато се зарежда модул, или да посочите подмодулите, които да бъдат експортирани.

Коментари (0)

Той улеснява импортирането на други файлове на Python. Когато поставите този файл в директория (да речем stuff), съдържаща други py файлове, можете да направите нещо като import stuff.other.

root\
    stuff\
         other.py

    morestuff\
         another.py

Без този __init__.py в директорията stuff не бихте могли да импортирате other.py, защото Python не знае къде е изходният код на stuff и не може да го разпознае като пакет.

Коментари (1)