2013-04-19 48 views
9

Sprawdziłem inne posty tutaj na ten temat i nie znalazłem jednoznacznej odpowiedzi, choć jestem pewien, że jest to coś prostego.AttributeError: obiekt 'module' nie ma atrybutu

Moje kod ma następującą strukturę ...

import matplotlib 
... 
... 

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

Wołam 'function_A' z instancji 'xyz' i kiedy ja dostaję komunikat o błędzie:

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

Na podstawie przeczytanych przeze mnie postów wydaje się, że mam problem z importowaniem matplotlib, ale nie mogę tego rozwiązać. Próbowałem zaimportować go w ramach definicji Function_A (myślę, że jest to zła forma, ale chciałem ją przetestować), ale wciąż mam ten sam błąd.

Użyłem mojego kodu "function_A" w innym miejscu bez problemu, ale była to tylko funkcja w module, a nie metoda w klasie.

Każda pomoc jest doceniana!

Odpowiedz

15

Myślę, że masz rację i jest to problem związany z importem. Moduł matplotlib nie mieć robi figure funkcję:

>>> 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' 

Funkcja figura znajduje się głębiej. Istnieje kilka sposobów, aby wyciągnąć go, ale zwykle import wygląda bardziej jak:

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

To chyba dobry pomysł, aby trzymać się tego zwyczaju, ponieważ jest on używany przez większość przykładów znajdziesz na Internet, taki jak w matplotlib gallery. (Galeria jest nadal pierwszym miejscem, do którego się udaje, kiedy muszę wymyślić, jak coś zrobić: znajduję obraz, który wygląda tak, jak chcę, a następnie spójrz na kod.)

+4

Jezus Chrystus, ja ' Jestem idiotą. Mój drugi kod poprawnie importuje moduł. Dzięki za pomoc. – gearhead

Powiązane problemy