raise NotImplementedError
2022-02-14 19:38:47
Pythonプログラミングのraiseでは、エラーを発生させる機能があり、その条件はプログラマがカスタマイズすることが可能です。オブジェクト指向プログラミングでは、親クラスでは未実装のメソッドインターフェースを残し、その子クラスで実装することができます。その子クラスが実装を要求されている場合、非実装が問題になるのであれば、raiseの手法を使うのが良い。そして、この時に発生する問題の分類がNotImplementedErrorです。
例
class FatherClass:
def func(self):
raise NotImplementedError("ERROR: func not implemented!")
class ChildClass(FatherClass):
pass
obj = ChildClass()
obj.func()
上記の例では、子クラスは親クラスのfunc関数を実装しておらず、子クラスでクラスオブジェクトを生成してもエラーになりませんが、親クラスのfunc関数を呼び出すと、以下のエラーがポップアップ表示されることになります。
Traceback (most recent call last):
File "/media****/test.py", line 111, in <module>
obj.func()
File "/media****/test.py", line 104, in func
raise NotImplementedError("ERROR: func not implemented!")
NotImplementedError: ERROR: func not implemented!
つまり、親クラスの func 関数を呼び出すとき、python はその関数がサブクラスで実装されているかどうかを自動的に認識します。
上記のエラーを修正するには、以下のように親クラスのfunc関数をサブクラスで実装するだけです。
class FatherClass:
def func(self):
raise NotImplementedError("ERROR: func not implemented!")
class ChildClass(FatherClass):
def func(self):
print("hello world!")
obj = ChildClass()
obj.func()
実行結果は次のようになります。
hello world!
関連
-
'node' は内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
.NETで134217728バイトの許容メモリサイズを使い果たした(8192バイトを割り当てようとした)。解決方法
-
バンドルコマンドが見つかりません
-
jsについて Uncaught TypeError: null issue のプロパティ 'style' を読み取ることができません。
-
Uncaught TypeError: document.getElementsByClassName("xxx").addEventListener is not a function.
-
Python update pip error: EnvironmentErrorのため、パッケージをインストールできませんでした。[WinError 5] アクセスが拒否されました
-
エラー]ldが1終了ステータスを返した場合の解決策
-
RabbitMQ起動時のトラブルと解決方法
-
カメラへの呼び出しがTypeError: undefined is not an objectで解決される('navigator.mediaDevices.getUserMedia'を評価する)。
-
Assert.assertNotNull() で null 判定 Assertion
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
エラー: collect2:ld が 1 の終了ステータスを返した (要約)
-
IIS 7.5上のASP.NET 4.0とチャートに関する質問
-
解決済み VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/O...
-
PHP connect to Mysql error フェイタルエラーです。Uncaught Error: アプリケーションの未定義関数mysql_connect()への呼び出し
-
Vue プロジェクトの Heroku デプロイメントに失敗する: sh: 1: vue-cli-service: 見つからない
-
Oracle の例外 ORA-01861 を解決する: リテラルが形式文字列に一致しません。
-
zsh: コマンドが見つかりません 解決策
-
[違反】スクロールブロックの「mousewheel」イベントに非パッシブなイベントリスナーを追加。
-
VS2019 MFCのデバッグエラーです。C1083 インクルードファイルが開けません。"afxwin.h" を開けません。そのようなファイルやディレクトリはありません
-
ahkスクリプトガイド