2013-07-31 17 views
6

Ho una classe e voglio importare una funzione def facendo:Python: l'importazione di un altro file .py

import <file> 

ma quando provo a chiamarlo, si dice che il DEF non può essere trovato. Ho anche provato:

ma poi dice che il nome globale 'x' non è definito.

Quindi, come posso fare questo?

Edit:

Ecco un esempio di quello che sto cercando di fare. In file1.py ho:

var = "hi" 

class a: 
    def __init__(self): 
    self.b() 

    import file2 

a() 

e file2.py ho:

def b(self): 
    print(var) 

si tratta solo mi dà un errore di però.

+0

cosa stai cercando di importare, è integrato? e se no si trova nella stessa directory della directory di lavoro? – Stephan

+0

Non si importa un 'file'; importi un * modulo * o nomi contenuti in un modulo. 'import modulename', non' import filename.py'. Dovrai aggiungere un esempio più concreto per illustrare meglio il tuo problema. –

+0

Puoi inserire la dichiarazione di importazione effettiva e i percorsi di file assoluti effettivi nel tuo post? – user2357112

risposta

7
import file2 

carica il modulo file2 e lo associa al nome file2 nello spazio dei nomi corrente. b da file2 è disponibile come file2.b, non b, quindi non viene riconosciuto come metodo. Si potrebbe risolvere il problema con

from file2 import b 

che caricare il modulo e assegnare la funzione b da quel modulo al nome b. Non lo consiglierei, però. Importare file2 al livello più alto e definire un metodo che deleghi a file2.b o definire una superclasse di mixin da cui si può ereditare se si utilizza frequentemente gli stessi metodi in classi non correlate. L'importazione di una funzione per usarla come metodo è confusa e si interrompe se la funzione che stai cercando di utilizzare è implementata in C.

Problemi correlati