2013-04-19 30 views
9

Ho visto altri post qui su questo argomento e non ho trovato una risposta chiara, anche se sono sicuro che sia qualcosa di semplice.AttributeError: l'oggetto 'module' non ha attributo

Il mio codice ha la seguente struttura ...

import matplotlib 
... 
... 

class xyz: 
    def function_A(self,...) 
     ... 
     ... 
     fig1 = matplotlib.figure() 
     ... 
     ... 

io chiamo 'function_A' da un'istanza di 'xyz' e quando lo faccio ricevo il seguente messaggio di errore:

AttributeError: 'module' object has no attribute 'figure' 

Sulla base dei post che ho letto sembra un problema con il modo in cui sto importando matplotlib, ma non riesco a risolverlo. Ho provato a importarlo all'interno della definizione Function_A (penso che sia una cattiva forma ma volevo testarlo), ma ho ancora lo stesso errore.

Ho usato il mio codice 'function_A' altrove senza problemi, ma era solo una funzione in un modulo, non un metodo in una classe.

Qualsiasi aiuto è apprezzato!

risposta

15

Penso che tu abbia ragione ed è un problema di importazione. Il modulo matplotlib non avere fa una funzione figure:

>>> import matplotlib 
>>> matplotlib.figure 
Traceback (most recent call last): 
    File "<ipython-input-130-82eb15b3daba>", line 1, in <module> 
    matplotlib.figure 
AttributeError: 'module' object has no attribute 'figure' 

la funzione figura si trova più in profondità. Ci sono alcuni modi per tirare dentro, ma la solita importazione sembra più:

>>> import matplotlib.pyplot as plt 
>>> plt.figure 
<function figure at 0xb2041ec> 

E 'probabilmente una buona idea di attenersi a questa abitudine, perché è utilizzato dalla maggior parte degli esempi si trovano sul Web, ad esempio quelli nello matplotlib gallery. (La galleria è ancora il primo posto dove vado quando ho bisogno di capire come fare qualcosa: trovo un'immagine che assomiglia a quello che voglio, e poi guardo il codice.)

+4

Gesù Cristo, I ' sono un idiota Il mio altro codice importa correttamente il modulo. Grazie per l'aiuto. – gearhead

Problemi correlati