Ist es sinnvoll, dass ein Modul seine Submodule rekursiv importiert?

8

Ich sehe ein gemeinsames Muster mit Python-Modulen. Manchmal importiert __init__.py seine Submodule:

z. B.

%Vor%

Also muss der Client-Code das nur tun:

%Vor%

Anstelle von:

%Vor%

Welches ist die beste Praxis TM ? Ist der rekursive Import fehlerhaft oder sollte ich das Standardverhalten beibehalten? Was ist der Grund für das Standardverhalten?

    
Alex B 18.05.2012, 04:32
quelle

2 Antworten

3

Dies hängt von der Verwendung Ihres Moduls ab. Wenn die Submodule nur Singleton-Objekte sind, die zufällig als Module beschrieben werden, anstatt z. B. Java-ähnliche Klassen mit all-statischen Methoden, ist der rekursive Import wahrscheinlich in Ordnung. Wenn Ihr Modul andererseits mehrere zusammenhängende Untermodule gruppiert (siehe z. B. das Modul stdlib html ), würden Sie explizite Submodulimporte wünschen.

Im Allgemeinen sagt ein rekursiver Import-Setup "jeder Client dieses Moduls wird immer alle diese wollen". Überlegen Sie, ob das für Ihr Modul (und andere Module, von Fall zu Fall) zutrifft, und gehen Sie von dort aus.

    
lvc 18.05.2012 04:58
quelle
0

Diese Praktiken sind gleich.

Das erste Beispiel erwartet, dass beide Submodule zusammen verwendet werden müssen, so dass es immer zwei Importe in Benutzercode geben würde. Ihnen bieten Sie eine Abkürzung.

Das zweite erwartet Submodule sind eigenständige Blöcke mit nur indirekter Interaktion mit anderen.

    
Villlem 18.05.2012 05:11
quelle

Tags und Links