Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:init.py
  • ___init__.py
  • War in älteren Python-Versionen notwendig damit ein Verzeichnis als Paket erkannt wurde
  • erlaubt Dinge für das Paket zu konfigurieren

__all__

  • __all__ ist eine magische Variable
  • Type: list
  • Repräsentation aller „öffentlichen“ (also für Zugriff von außerhalb des Packages) gedachten Module
  • alle in der Liste angegeben Module werden bei from <Pakagename> import * importiert

init.py

__all__ = [module1, module2, module3]

Beliebige Datei:

from somepackage import *

module2.something()

In obigem Beispiel sieht man das das Modul module2 nicht explizit importiert wurde, sondern * aus somepackage (in dem auch module2 liegt).
Da * importiert wurde wurden module1, module2 und module3 die in __all__ stehen importiert.
Ein Modul „module_intern“ welches nicht in __all__ steht würde nicht mit importiert werden.

Importing/Path Shortening

  • man kann Module, Klassen und Variablen direkt in der init.py importieren die eigentlich irgendwo im Modul liegen
  • damit werden sie direkt über den Modulnamen zugänglich

Folgende Paket-Struktur <code> mypackage

  mymodule
      myclass

<code>

Wenn in der __init__.py folgendes gemacht wird

from mymodule import myclass

Kann man in einer beliebigen Datei das hier machen:

import mypackage

bla = mymodule.myclass()

In obigem Beispiel wird also direkt auf myclass zugegriffen obwohl nur das Package importiert wurde und nicht das Modul in dem myclass definiert ist.
Das geht weil __init__.py die Klasse importiert hat.

python/init.py.txt · Zuletzt geändert: 2020/10/25 12:53 von root