Ihre Python-Imports vereinfachen: Wie man nach Klassen und nicht nach Dateien importiert
Bei der Arbeit mit Python, insbesondere in größeren Projekten, wird es entscheidend, die Imports effektiv zu verwalten. Sie könnten feststellen, dass Sie auf Klassen direkt aus ihrem Paket und nicht aus ihren jeweiligen Dateien zugreifen möchten. Diese Methode kann Ihren Code sauberer und leichter lesbar machen. In diesem Blogbeitrag werden wir behandeln, wie Sie dies in Ihren Python-Projekten mit einer einfachen Struktur erreichen können.
Das Problem
Betrachten Sie die folgende Verzeichnisstruktur für Ihre Python-Anwendung:
app/
app.py
controllers/
__init__.py
project.py
plugin.py
In diesem Fall würde das Importieren einer Klasse Project
, die in project.py
definiert ist, in app.py
traditionell so aussehen:
from app.controllers.project import Project
Was aber, wenn Sie möchten, dass Ihre Importanweisung kürzer und sauberer ist? Sie könnten es wünschen, so zu importieren:
from app.controllers import Project
Dies vereinfacht nicht nur Ihre Importanweisungen, sondern hält auch Ihren Code angenehm organisiert. Die Frage stellt sich: Wie können Sie dies einrichten?
Die Lösung
Um Ihren Importprozess zu optimieren und das Importieren von Klassen direkt aus einem Paket zu ermöglichen, müssen Sie eine kleine Änderung in Ihrer __init__.py
-Datei im Verzeichnis controllers
vornehmen.
Schritt-für-Schritt-Anleitung
-
Öffnen Sie die
__init__.py
-Datei: Diese Datei wird normalerweise verwendet, um Ihr Python-Paket zu initialisieren, und ermöglicht es Ihnen zu steuern, was importiert wird, wenn Sie das Paket selbst importieren. -
Fügen Sie die Importanweisung hinzu: Um die Klasse
Project
direkt auscontrollers
importieren zu können, fügen Sie die folgende Zeile zu Ihrer__init__.py
hinzu:from project import Project
Dies teilt Python mit, die Klasse
Project
automatisch ausproject.py
zu importieren, wenn Sie das Paketcontrollers
importieren. -
Anpassung an absolute Imports: Mit der Einführung von Python 2.7 und darüber hinaus werden absolute Imports zum Standardmodus für Imports. Um mögliche Konflikte mit einem Top-Level-Modul zu vermeiden, das versehentlich einen Namen teilen könnte (wie
project
), ist es vorteilhaft, einen Punkt hinzuzufügen, um einen relativen Import anzuzeigen. Daher würden Sie Ihren Import in__init__.py
ändern zu:from .project import Project
Dies zeigt an, dass die Klasse
Project
aus dem aktuellen Paket (controllers
) importiert wird.
Wichtige Erkenntnisse
- Durch die Modifikation Ihrer
__init__.py
vereinfachen Sie Ihre Imports erheblich. - Die Verwendung des Punktes (.) vor dem Modulumnamen stellt sicher, dass Sie auf das korrekte Modul verweisen, was besonders nützlich in größeren Anwendungen mit möglichen Namenskonflikten ist.
- Diese Praxis verbessert nicht nur die Lesbarkeit Ihres Codes, sondern hilft Ihnen auch, eine klare Struktur zu bewahren, während Ihr Projekt wächst.
Fazit
Wenn Sie die einfachen Schritte aus diesem Beitrag befolgen, können Sie Ihre Python-Coding-Praktiken verbessern, indem Sie Ihre Imports unkomplizierter gestalten. Diese Technik spart nicht nur Zeit, sondern trägt auch zu sauberem, wartbarem Code bei. Denken Sie daran: Eine gut strukturierte Anwendung beginnt mit der effektiven Verwaltung Ihrer Imports!
Fühlen Sie sich frei, diesen Ansatz in Ihren eigenen Projekten auszuprobieren und zu sehen, welchen Unterschied er macht!