Ich versuche, ein Modul zu importieren, aber nur wenn ein Objekt einer bestimmten Klasse aufgerufen wird. Zum Beispiel:Python importieren ein Modul nur in eine Klasse
class One(object):
try:
import OneHelper
except ImportError:
pass
def __init__(self):
# this function doesn't use OneHelper
...
def blah(self):
# this function does
OneHelper.blah()
Dies führt zu einem NameError: global name 'OneHelper' is not defined
, wenn die One.blah()
Funktion aufgerufen wird. Bis jetzt ist das Einzige, was ich gefunden habe, das funktioniert, das Modul in die eigentlichen Funktionen zu importieren, die es benutzen. Also:
class One(object):
def __init__(self):
# this function doesn't use OneHelper
...
def blah(self):
try:
import OneHelper
except ImportError:
pass
# this function does
OneHelper.blah()
Aber ich will nicht das Modul in jeder Funktion will ich es habe importieren in verwenden, ich will es die ganze Klasse zur Verfügung stehen, aber nur wenn eine Instanz Diese Klasse wird instanziiert. Entschuldigung, wenn ich nicht klar genug bin ...
Sie könnten versuchen, eine Funktion zu erstellen, die die Klasse importiert, wenn sie instanziiert wird, und dann die Funktion nur innerhalb der anderen Funktionen aufruft. Kleiner Workaround vielleicht. –