この質問は以下を参照しています。
PyLintが文句を言わずにPythonで例外を定義する「正しい」方法
クリーンなコードに関しては、例外を定義する理想的な方法は次のようになります。
class MyException(Exception):
pass
ただし、参照されている質問で述べられているように、これにより実行時の警告が発生します。
DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
受け入れられた答えは、メッセージメソッドを定義することのようです。
class MyException(Exception):
def __init__(self, message):
super(MyException, self).__init__(message)
self.message = message
4行の乱雑で読みにくいコード行であることに加えて、これに関する最大の問題は、新しい例外の名前(MyException
)を2回冗長に入力する必要があることです。
私はPythonでクラスをあまり使用しないので、ここでベースから離れている場合は許してください。ただし.message
、Pythonには減価償却されていないメソッドを使用して独自のベース例外を定義する方が、これを処理するためのより良い方法かもしれません。からのものを使用する際の問題BaseException
?:::
# Do this only once:
class MyBaseException(Exception):
def __init__(self, message):
super(MyBaseException, self).__init__(message)
self.message = message
# Whenever you want to define a new exception:
class NewException(MyBaseException):
pass