2016-08-22 43 views
-2

私はPythonでプログラミングを開始し、次のような問題を持っている:私は、単純な関数abc.pyを書かれている:私はしたいと思いますはAttributeError:「モジュール」オブジェクトが属性を持っていない「のFib」

def Fib(n): 
    if n<2: 
     return n 
    else: 
     return Fib(n-1) + Fib(n-2) 

別のpythonファイルにインポートする:

import abc 

x = abx.Fib(4) 
print(x) 

次に、タイトルに書かれているエラーが表示されます。 Pycharm Community Edition 2016.2.1を使用しています。

+1

あなたは、コードのタイプミスを持っています: 'abc.Fib'の代わりに' abx.Fib' –

+1

'abx'とは何ですか?それは 'abc'ですか?また、完全なトレースバックには手がかりが含まれている可能性があります。 –

+0

Pythonには 'abc'という名前の標準モジュールがあります。名前の競合を避けるには、モジュールの別の名前を選択してください(例: 'abcd.py'または' fib.py')。 – pts

答えて

-1

おっと、それはタイプミスです!

x=abx.Fib(4) 

は次のようになります。

x=abc.Fib(4) 

ここでの教訓はもう少し密接に校正、およびそれらの厄介なエラーメッセージに注意を払うことです:)

+1

おそらく存在しない、そしてインポートされていないモジュールのAttributeErrorではなく、 'NameError:global name 'abx'が定義されていませんか? –

+0

あなたが知っているように、入力ミスは一般的には解答ではなく閉じなければなりません。しかし、2ビットの言い回しとして、OPの質問のエラーを解決することはできません。なぜなら、これが解決策であれば、違うエラーになるからです。 –

+0

図にはすでにabxモジュールがあります。エラーメッセージを読むことについて私自身がアドバイスをしているはずです。 –

関連する問題