2012-04-28 12 views
1

は、私はそれが持っているメソッドのカップルを使用するようにモジュールをインポートしようとしている、と突然何らかの理由で私はエラーを取得:私はメソッドを持っているもちろんインポートモジュール、はAttributeError

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

を私がインポートしているモジュールのgetFoobar。他のファイルで問題なく使用しています。これは以前に起こったことはありません。

すべての.pycファイルを削除しようとしましたが、同じフォルダに__init__.pyがあることを確認しました。相互インポートは行われていません。

私はSOとGoogleを検索しましたが、解決策はありませんでした。 何が起こっているのかに関するアイデアはありますか?それ以外に何ができますか?

ありがとうございます!

+3

ここで普通の問題はモジュール名の衝突です: 'import gronk'は他のバージョンが' sys.path'に先に出現するまで意図したバージョンのgronkを取得します。モジュールの '__file__'属性を出力して、どのモジュールが表示されているのかを確認してください。 – torek

+0

私はそれについて考えていませんでしたが、それはそうではありませんでした。どうやら私は間接的に相互輸入を却下した。私はA.pyがB.pyをインポートしてからB.pyはA.pyをインポートしていないので、相互インポートはないと考えました。私がインポートしている他のモジュールが相互関係を引き起こしているかどうかをチェックするのを忘れていました。とにかく、今修正されました!ありがとう、私は迅速な対応に感謝します。 –

答えて

0

無料のモジュールレベルの関数またはメソッドにアクセスしようとしていますか?大きな違いがあります。あなたはこのようなものがある場合:あなたが見ることができるように

import foo 
f = foo.foo() 
f.bar1() 
foo.bar2() 

:ファイル「foo.py」に保存されて

class foo: 
    def bar1(): 
     pass 
def bar2(): 
    pass 

を、あなたはこのように、一つ一つを呼び出すためにさまざまなことを行う必要がありfooモジュールからbar2に直接アクセスすることができます。これはfooクラスの外にあるためですが、fooクラスのインスタンスを宣言してbar1を呼び出す必要があります。私はfooモジュールからbar1を呼び出そうとしていると仮定しています。これは一般的な初心者のミスであり、特にJavaから切り替えた場合にはそうです。

+0

明らかに、私は相互輸入品をチェックしている。詳細については上記のコメントを確認してください。どうもありがとうございました!多分それは他人を助けるでしょう。 –

関連する問題