ご覧エラーメッセージ:それはどのように知っている最良のよう
imaplib.error: [AUTHENTICATIONFAILED] Authentication failed.
は、エラーを説明されます。例外が発生した時点で例外クラスは "imaplib.error"と呼ばれます。これを呼び出す人は誰でもその方法を記述しています(詳細は後で説明します)。私は周りに突き、と私はあなたのためにそれを見つけたと思う:
Python 2.7.2 (default, Nov 14 2011, 19:37:59)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import imaplib
>>> imaplib.IMAP4.error
<class 'imaplib.error'>
私はimaplib.pyファイルを開いて、奇数例外が発生メカニズムのように思えるものを見つけました。 "IMAP4"はクラスで、 "error"はIMAP4クラス内で定義されたクラスです。 Pythonはクラスを "入れ子にする"ようには見えません。クラス定義だけです。したがって、クラス "error"のオブジェクトが存在すると、スコープ "imaplib"で定義されたクラス "error"のオブジェクトです。 "エラー"クラス定義が "IMAP4"クラスのlib定義の内側にあるという事実は、Pythonとは無関係です。一方、クラス "エラー" のオブジェクトを記述するためには、のようなオブジェクトが存在するので、Pythonがあなたのクラスの定義を見つけるためには、そのオブジェクトをimaplib.IMAP4.errorとして参照する必要がありますについて話す。
私はこの問題を調査する前に、非常に混乱しています。
Python 2.7.2 (default, Nov 14 2011, 19:37:59)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> class foo(object):
... class bar(object):
... pass
... def b(self):
... return bar()
...
>>> bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'bar' is not defined
>>> foo.bar
<class '__main__.bar'>
>>> foo().bar()
<__main__.bar object at 0x10048dd10>
基本的に、あなたは非常に合理的なことをやろうとしたが、imaplibライブラリは例外投げを処理する方法は少し奇妙である、あなたの人生を困難に:ここでは簡単な例です。長い話が短いので、imaplib.IMAP4.error
をキャッチして、あなたの人生を進めてください。
こんにちは、これを少しきれいにしてくれてありがとう。だから、私の理解を確認するために、 'AbortError'と' ReadOnlyError'は基本例外 'imaplib.IMAP4.error'を継承していますか? –
はい、ただし間接的です。 AbortErrorとReadOnlyErrorは、imaplib.IMAP4.abortとimap.IMAP4.readonlyを継承し、どちらもimaplib.IMAP4.errorから継承します。 –