custom-exceptions - python 例外クラス - 現代のPythonでカスタム例外を宣言する適切な方法は?

python 例外クラス メッセージ / python / exception

現代の Python でカスタム例外クラスを宣言する適切な方法は何ですか? 私の第一の目標は、他の例外クラスが持っているどんな標準にも従うことで、例えば、私が例外の中に入れた余分な文字列は、例外をキャッチしたどんなツールによっても出力されます。

Python 2.6.2で以下のようなdeprecationの警告につまづいてしまいました。

>>> 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

Marco



Answer #1

質問を見落としていたのかもしれませんが、なぜでしょう。

class MyException(Exception):
    pass

編集:何かをオーバーライドする(または余分な引数を渡す)には、次のようにします。

class ValidationError(Exception):
    def __init__(self, message, errors):

        #必要なパラメーターを使用して基本クラスコンストラクターを呼び出す
        super(ValidationError, self).__init__(message)

        #カスタムコードについて...
        self.errors = errors
class ValidationError(Exception):
    def __init__(self, message, errors):

        #必要なパラメーターを使用して基本クラスコンストラクターを呼び出す
        super().__init__(message)

        #カスタムコードについて...
        self.errors = errors