Modul importiert und __init__.py in Python

Ich versuche zu verstehen, was die best practices sind mit Bezug auf Python (v2.7) import-mechanik. Ich habe ein Projekt, das begonnen hat zu wachsen ein wenig und können sagen, mein code ist folgendermaßen organisiert:

foo/
    __init__.py
    Foo.py
    module1.py
    module2.py
    module3.py

Den Namen des Pakets ist foo - und unterhalb habe ich Modul Foo.py enthält code für die Klasse Foo. Also ich bin mit dem gleichen Namen für das Paket, Modul und Klasse, die vielleicht nicht sehr clever, mit zu beginnen.

__init__.py leer ist und Klasse Foo muss importieren module1, module2 and module3 daher Teil meiner Foo.py - Datei sieht wie folgt aus:

# foo/Foo.py

import module1
import module2
import module3

class Foo(object):
    def __init__(self):
....
....
if __name__ == '__main__':
    foo_obj = Foo()

Allerdings habe ich später nachgeholt, und ich dachte, es würde besser sein, dass alle Importe in die __init__.py - Datei. Daher meine __init__.py jetzt aussieht:

# foo/__init__.py

import Foo
import module1
import module2
import module3
....
....

und meine Foo.py muss nur importieren foo:

# foo/Foo.py

import foo

Während dies sieht übersichtlich aus, da es ein one-liner, ich bin ein bisschen besorgt, dass es vielleicht schaffen zirkuläre Importe. Was ich meine ist, dass wenn das Skript Foo.py ausgeführt wird importieren, alles, was es kann und dann __init__.py genannt werden, die importiert Foo.py wieder (ist das richtig?). Zusätzlich mit den gleichen Namen für das Paket, Modul und Klasse macht die Dinge eher verwirrend.

Macht es Sinn, die Art, wie ich es getan haben? Oder bin ich da ärger?

InformationsquelleAutor Aenaon | 2016-03-01
Schreibe einen Kommentar