2011-01-19 15 views
2
class UserDict: 
    def __init__(self, dict=None):    
     self.data = {}       
     if dict is not None: self.update(dict) 

ファイル "abc.py"を作成し、上に置きました。なぜこのPythonは動作しませんか? Simple Oop

>>> import abc 
>>> d = abc.UserDict() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'UserDict' 

答えて

7

はほとんど確かにあなたの代わりに、独自のabc.pyの抽象基底クラス用のPython abcモジュールをインポートしています。あなたのモジュールのために別の名前を選ぶほうがいいです。

編集:もちろんです。独自のモジュールを組み込みモジュールと同じ名前でインポートすることは可能です。あなたのモジュールがインタプリタの作業ディレクトリにあるか、またはPythonパスを正しく設定する必要があります。しかし、名前の衝突を回避する方がはるかに簡単です。特にこの場合、おそらくモジュールの名前は気にしません。

+2

はい、おそらく、あなたが思っているabcをインポートしていないでしょう。 'print abc .__ file__'をチェックしてください。 – TryPyPy

+0

Pythonについての厄介なことは、 –

+4

'help(abc)'もこのような問題を診断する良いツールであるということです。 – Johnsyweb

関連する問題