[解決済み] Python 2.6で非推奨となったBaseException.message
2022-04-20 21:41:01
質問
以下のユーザー定義例外を使用すると、Python 2.6 で BaseException.message が非推奨になったという警告が表示されます。
class MyException(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return repr(self.message)
これは警告です。
DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
self.message = message
これのどこが悪いのでしょうか?非推奨の警告を消すには、何を変えればいいのでしょうか?
どうすればいいですか?
解決策 - コーディングはほとんど必要ありません
の例外クラスを継承するだけです。
Exception
を作成し、コンストラクタの最初のパラメータとしてメッセージを渡します。
例
class MyException(Exception):
"""My documentation"""
try:
raise MyException('my detailed description')
except MyException as my:
print my # outputs 'my detailed description'
を使用することができます。
str(my)
または (あまりエレガントではありませんが)
my.args[0]
を使用してカスタムメッセージにアクセスします。
背景
Pythonの新しいバージョン(2.6以降)では、カスタム例外クラスはExceptionから継承することになっています。 Python 2.5 からは を継承しています。その背景は、以下のサイトで詳しく説明されています。 PEP 352 .
class BaseException(object):
"""Superclass representing the base of the exception hierarchy.
Provides an 'args' attribute that contains all arguments passed
to the constructor. Suggested practice, though, is that only a
single string argument be passed to the constructor."""
__str__
と
__repr__
は、すでに意味のある形で実装されています。
特に、(メッセージとして使用可能な)1つのアーギュメントのみの場合。
を繰り返す必要はありません。
__str__
または
__init__
の実装または作成
_get_message
を、他の方が提案されているように
関連
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] メソッドを廃止または非推奨としてマークする方法は?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] 例外に情報を追加する?
-
[解決済み] Pythonで例外メッセージを正しく取得する方法