Bibliotheken und Frameworks verwenden normalerweise Initialisierungscode in __init__.py
Dateien , um die interne Struktur sauber zu verbergen und dem Benutzer eine einheitliche Oberfläche zu bieten .
Nehmen wir das Beispiel des Django-Formularmoduls . Verschiedene Funktionen und Klassen im Formularmodul werden basierend auf ihrer Klassifizierung in verschiedenen Dateien definiert.
forms/
__init__.py
extras/
...
fields.py
forms.py
widgets.py
...
Wenn Sie nun ein Formular erstellen möchten, müssen Sie wissen, in welcher Datei jede Funktion definiert ist, und Ihr Code zum Erstellen eines Kontaktformulars muss ungefähr so aussehen (was unpraktisch und hässlich ist).
class CommentForm(forms.forms.Form):
name = forms.fields.CharField()
url = forms.fields.URLField()
comment = forms.fields.CharField(widget=forms.widgets.Textarea)
Stattdessen können Sie in Django direkt aus dem Formular-Namespace auf verschiedene Widgets, Formulare, Felder usw. verweisen.
from django import forms
class CommentForm(forms.Form):
name = forms.CharField()
url = forms.URLField()
comment = forms.CharField(widget=forms.Textarea)
Wie ist das möglich? Um dies zu ermöglichen, fügt Django der forms/__init__.py
Datei die folgende Anweisung hinzu, die alle Widgets, Formulare, Felder usw. in den forms
Namespace importiert .
from widgets import *
from fields import *
from forms import *
from models import *
Wie Sie sehen, vereinfacht dies Ihr Leben beim Erstellen der Formulare, da Sie sich jetzt keine Gedanken mehr darüber machen müssen, wo jede Funktion / Klasse definiert ist, und alle diese Funktionen direkt aus dem forms
Namespace verwenden müssen. Dies ist nur ein Beispiel, aber Sie können Beispiele wie diese in anderen Frameworks und Bibliotheken sehen.