10
最新のPythonでカスタム例外を宣言する適切な方法は?
最新のPythonでカスタム例外クラスを宣言する適切な方法は何ですか?私の主な目標は、他の例外クラスの標準に従うことです。これにより、(たとえば)例外に含めた余分な文字列は、例外をキャッチしたツールによって出力されます。 「最新のPython」とは、Python 2.5で動作するものの、Python 2.6およびPython 3. *のやり方では「正しい」ものを意味します。「カスタム」とは、エラーの原因に関する追加のデータを含むことができるExceptionオブジェクトを意味します。文字列、おそらく例外に関連する他の任意のオブジェクトもです。 Python 2.6.2で次の非推奨の警告が表示されました。 >>> class MyError(Exception): ... def __init__(self, message): ... self.message = message ... >>> MyError("foo") _sandbox.py:3: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 BaseExceptionという名前の属性に特別な意味があるのはおかしいようmessageです。私がPEP-352から収集した属性は、2.5で特別な意味を持っていたため、廃止しようとしているので、その名前(およびその1つだけ)は現在禁止されていると思いますか?ああ。 Exception魔法のパラメータがあることもぼんやりと認識していますがargs、その使用方法は知りません。また、それが将来のことを行うための正しい方法であると確信していません。私がオンラインで見つけた多くの議論は、彼らがPython 3の引数を取り除こうとしていることを示唆していました。 更新:2つの回答により、、__init__および__str__/ __unicode__/のオーバーライドが提案されています__repr__。タイピングが多いようですが、必要ですか?