0

この質問は以下を参照しています。

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
4

1 に答える 1

1

コードのどこかでMyException.messageを使用しているようです。次のよう に変更できます。

try: 
   <some code>
except MyException as msg:
    <handle>
于 2012-10-21T23:14:43.667 に答える