it-swarm.com.de

Wie importiere ich die Klasse in demselben Verzeichnis oder Unterverzeichnis?

Ich habe ein Verzeichnis, in dem alle .py -Dateien gespeichert sind.

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides

Ich möchte Klassen aus user.py und dir.py in main.py verwenden.
Wie kann ich diese Python-Klassen in main.py importieren?
Außerdem kann ich die Klasse User importieren, wenn user.py in einem Unterverzeichnis liegt.

bin/
    dir.py
    main.py
    usr/
        user.py
462
Bin Chen

Python 2

Erstellen Sie eine leere Datei mit dem Namen __init__.py im selben Verzeichnis wie die Dateien. Dies bedeutet für Python, dass es "in Ordnung ist, aus diesem Verzeichnis zu importieren".

Dann mach einfach ...

from user import User
from dir import Dir

Dasselbe gilt, wenn sich die Dateien in einem Unterverzeichnis befinden - geben Sie auch einen __init__.py in das Unterverzeichnis ein und verwenden Sie dann reguläre Importanweisungen mit Punktnotation. Für jede Verzeichnisebene müssen Sie den Importpfad hinzufügen. 

bin/
    main.py
    classes/
        user.py
        dir.py

Wenn das Verzeichnis "Klassen" heißt, würden Sie Folgendes tun:

from classes.user import User
from classes.dir import Dir

Python 3

Wie vorher, aber fügen Sie dem Modulnamen einen . voran, wenn Sie kein Unterverzeichnis verwenden:

from .user import User
from .dir import Dir
675
Amber

Ich habe gerade gelernt (danke martineaus Kommentar ), dass Sie zum Importieren von Klassen aus Dateien in demselben Verzeichnis jetzt in Python 3 schreiben würden:

from .user import User
from .dir import Dir
103
ecp

In Ihrem main.py:

from user import Class

dabei ist Class der Name der Klasse, die Sie importieren möchten.

Wenn Sie eine Methode von Class aufrufen möchten, können Sie sie aufrufen mit:

Class.method

Beachten Sie, dass sich im selben Verzeichnis eine leere __init__.py-Datei befinden sollte. 

27
user225312

Sie können das Modul importieren und über den Namen darauf zugreifen, wenn Sie Funktionen und Klassen nicht mit Ihren kombinieren möchten

import util # imports util.py

util.clean()
util.setup(4)

oder Sie können die Funktionen und Klassen in Ihren Code importieren 

from util import clean, setup
clean()
setup(4)

sie können wildchar * verwenden, um alles in diesem Modul in Ihren Code zu importieren

from util import *
clean()
setup(4)
10
A.Zaben

Um es verständlicher zu machen:

Schritt 1: Gehen Sie zu einem Verzeichnis, in dem alle enthalten sind

$ cd /var/tmp

Schritt 2: Jetzt können wir eine class1.py-Datei erstellen, die einen Klassennamen Class1 mit etwas Code hat

$ cat > class1.py <<\EOF
class Class1:
    OKBLUE = '\033[94m'
    ENDC = '\033[0m'
    OK = OKBLUE + "[Class1 OK]: " + ENDC
EOF

Schritt 3: Jetzt können wir eine class2.py-Datei erstellen, die einen Klassennamen Class2 mit etwas Code hat

$ cat > class2.py <<\EOF
class Class2:
    OKBLUE = '\033[94m'
    ENDC = '\033[0m'
    OK = OKBLUE + "[Class2 OK]: " + ENDC
EOF

Schritt 4: Jetzt machen wir ein main.py, das einmal ausgeführt wird, um Class1 und Class2 aus zwei verschiedenen Dateien zu verwenden

$ cat > main.py <<\EOF
"""this is how we are actually calling class1.py and  from that file loading Class1"""
from class1 import Class1 
"""this is how we are actually calling class2.py and  from that file loading Class2"""
from class2 import Class2

print Class1.OK
print Class2.OK
EOF

Schritt 5: Führen Sie das Programm aus

$ python main.py

Die Ausgabe wäre

[Class1 OK]: 
[Class2 OK]:
8
YumYumYum
from user import User 
from dir import Dir 
4
demas

In Python3 ist __init__.pynicht mehr erforderlich . Wenn das aktuelle Verzeichnis der Konsole das Verzeichnis ist, in dem sich das Skript python befindet, funktioniert alles einwandfrei

import user

Dies funktioniert jedoch nicht, wenn es aus einem anderen Verzeichnis aufgerufen wird, das user.py nicht enthält.
Verwenden Sie in diesem Fall

from . import user

Dies funktioniert auch, wenn Sie die gesamte Datei anstatt nur einer Klasse von dort importieren möchten.

2
lucidbrot

Python 3


Gleiche directory.

importdatei: log.py

importklasse: SampleApp().

import log
if __== "__main__":
    app = log.SampleApp()
    app.mainloop()

oder

das Verzeichnis ist basic.

import in Datei: log.py.

importklasse: SampleApp().

from basic import log
if __== "__main__":
    app = log.SampleApp()
    app.mainloop()
1

Einfach zu kurz Erstellen Sie eine Datei __init__.py ist ein Klassenverzeichnis und importieren Sie sie wie folgt in Ihr Skript

from classes.myscript import *
0
Shafiq

aus demselben Verzeichnis importieren

from . import the_file_you_want_to_import 

zum importieren aus dem unterverzeichnis sollte das verzeichnis enthalten

init. py

datei anders als Sie Dateien dann

aus dem Verzeichnis importiere deine_datei

0
rojo_hlerr