Ich bin neu bei Python und entschuldige mich, wenn ich nicht die richtige Umgangssprache benutze, um diese Frage zu schreiben. Ich benutze Python 3.6.1 auf einem Windows-Rechner. Ich gebe ein funktionierendes Beispiel für das Problem, das ich habe.Laden eines Moduls mit einer abhängigen Klasse
Angenommen, ich schreibe ein Modul in der Datei Demo_func.py gespeichert. Es enthält die folgende Funktion:
def chebyshev_nodes(degree, domain):
return Chebyshev.basis(degree,domain).roots()
ich dann das folgende Skript ausführen:
from numpy.polynomial.chebyshev import Chebyshev
from Demo_func import chebyshev_nodes
chebyshev_nodes(5, [1,5])
es diesen Fehler erzeugt:
NameError: name 'Chebyshev' is not defined
Wenn ich stattdessen die Funktion chebyshev_nodes in meinem Skript schreiben als unten, dann funktioniert es gut.
from numpy.polynomial.chebyshev import Chebyshev
def chebyshev_nodes(degree, domain):
return Chebyshev.basis(degree,domain).roots()
chebyshev_nodes(5, [1,5])
Mein Verständnis ist, dass der Import von Chebyshev global ist. Aber irgendwie funktioniert das in meinem Modul Demo_func. Wie kann ich ein Modul schreiben, das von der Chebyshev-Klasse abhängt?
"Mein Verständnis ist, dass der Import von Chebyshev ist global" - es ist nicht. Die Modulinitialisierung, die es ausführt, ist global, aber es macht nur den Namen "Chebyshev" für den Bereich verfügbar, der den Import durchgeführt hat. – user2357112
Danke, das war hilfreich. Das Importieren von Chebyshev innerhalb der Funktionsdefinition funktioniert. Ist das der richtige Weg, dies zu tun? –