Python3エンジニア認定基礎試験 ⑦ 例外処理とクラス

実行時に発生するエラーへの対処と、オブジェクト指向の基礎であるクラスを学ぶ分野です。try・except・else・finallyの各節の役割、raise文による例外の送出、複数例外のまとめ方が頻出です。ValueError・KeyError・NameError・ZeroDivisionErrorなど例外の種類と発生条件を結びつける問題が多く出ます。あわせてjsonモジュールによるシリアライズ/デシリアライズ、クラスとインスタンスの関係も問われます。構文エラーと実行時エラーの違いを軸に、どの例外がいつ起きるかを整理しておきましょう。出題数41問。

この分野の問題41問を、選択肢・正解・解説つきで掲載しています。まず自分で解答を考えてから「正解と解説を見る」を開いて答え合わせをしてください。

クイズモードで挑戦 →

222JSON形式のデータをファイルオブジェクトから読み込んでPythonのオブジェクトとして取得する関数はどれか。

  1. Ajson.read()
  2. Bjson.loads()
  3. Cjson.reads()
  4. Djson.load()
正解と解説を見る

正解:Djson.load()

JSON形式のファイルオブジェクトからデータを読み込むにはjson.load()関数を使用します。

この問題の解説ページを開く →

223json.loads(fp)のように、引数にファイルオブジェクトを指定して実行したときに発生するエラーはどれか。

  1. AValueError
  2. BSyntaxError
  3. CTypeError
  4. DAttributeError
正解と解説を見る

正解:CTypeError

json.loads()の第1引数には文字列が必要なためファイルオブジェクトを指定するとTypeErrorになります。

この問題の解説ページを開く →

224Pythonのjsonモジュールにおいて存在しない関数であるjson.read()を実行したときに発生するエラーはどれか。

  1. AAttributeError
  2. BTypeError
  3. CValueError
  4. DSyntaxError
正解と解説を見る

正解:AAttributeError

存在しない関数を呼び出そうとするとAttributeErrorが発生します。

この問題の解説ページを開く →

225文字列表現などからオブジェクトに変えることを何というか。

  1. Aシリアライズ
  2. Bインスタンス化
  3. Cデシリアライズ
  4. Dオーバーライド
正解と解説を見る

正解:Cデシリアライズ

文字列表現などからオブジェクトに変換する操作をデシリアライズと呼びます。

この問題の解説ページを開く →

226a = "1,000' のように文字列定義の先頭と末尾の記号が一致していないコードを実行したときに起こるエラーはどれか。

  1. ATypeError
  2. BSyntaxError
  3. CValueError
  4. DNameError
正解と解説を見る

正解:BSyntaxError

Pythonの文法として正しくないコードを実行するとSyntaxErrorになります。

この問題の解説ページを開く →

227コードが文法として正しくても実行中に起こるエラーのことを何と呼ぶか。

  1. A例外
  2. B構文エラー
  3. C属性エラー
  4. D型エラー
正解と解説を見る

正解:A例外

コードの実行中に発生するエラーは例外(exception)と呼ばれます。

この問題の解説ページを開く →

228例外が起きたことを検知して例外発生時の動作を実装するために使用する文はどれか。

  1. Atry-except文
  2. Bif-else文
  3. Cfor-in文
  4. Ddef文
正解と解説を見る

正解:Atry-except文

例外処理を行うにはtry-except文を使用します。

この問題の解説ページを開く →

229try-except文において、通常の処理を記述するブロックはどこか。

  1. Atry節
  2. Bexcept節
  3. Cfinally節
  4. Delse節
正解と解説を見る

正解:Atry節

try節の中には通常の処理を記述します。

この問題の解説ページを開く →

230int()関数にint型に変換できない値(例: "1,000")を与えたときに発生する例外はどれか。

  1. ATypeError
  2. BValueError
  3. CKeyError
  4. DNameError
正解と解説を見る

正解:BValueError

データ型が合っていても値が適切でない場合はValueErrorが発生します。

この問題の解説ページを開く →

231ディクショナリに存在しないキーを参照しようとしたときに発生する例外はどれか。

  1. AValueError
  2. BTypeError
  3. CNameError
  4. DKeyError
正解と解説を見る

正解:DKeyError

ディクショナリに存在しないキーを参照するとKeyErrorが発生します。

この問題の解説ページを開く →

232except節で複数の例外を同時に処理するための正しい記述方法はどれか。

  1. Aexcept ValueError KeyError:
  2. Bexcept [ValueError, KeyError]:
  3. Cexcept ValueError & KeyError:
  4. Dexcept (ValueError, KeyError):
正解と解説を見る

正解:Dexcept (ValueError, KeyError):

複数の例外を処理するには括弧の中に例外をすべて列挙します。

この問題の解説ページを開く →

233未定義の変数または関数を使用しようとしたときに発生するエラーはどれか。

  1. AValueError
  2. BKeyError
  3. CTypeError
  4. DNameError
正解と解説を見る

正解:DNameError

未定義の変数や関数を参照するとNameErrorが発生します。

この問題の解説ページを開く →

234except節での処理が不要なときに記述するキーワードはどれか。

  1. Abreak
  2. Bcontinue
  3. Creturn
  4. Dpass
正解と解説を見る

正解:Dpass

except節の処理を無効にして何もしない場合はpassを記述します。

この問題の解説ページを開く →

235任意の例外を独自に発生(送出)させるために使用する文はどれか。

  1. Athrow文
  2. Bsend文
  3. Craise文
  4. Dcatch文
正解と解説を見る

正解:Craise文

raise文を使うことで任意の例外を発生させることができます。

この問題の解説ページを開く →

236例外発生の有無に関わらず、必ず最後に実行するクリーンアップ動作を定義する節はどれか。

  1. Atry節
  2. Bexcept節
  3. Celse節
  4. Dfinally節
正解と解説を見る

正解:Dfinally節

finally節に定義された処理は例外の有無に関わらず必ず実行されます。

この問題の解説ページを開く →

237数値(int型)と文字列(str型)の除算(例: 100 / "0")を行ったときに発生する例外はどれか。

  1. ATypeError
  2. BZeroDivisionError
  3. CValueError
  4. DNameError
正解と解説を見る

正解:ATypeError

意図していないデータ型が与えられたり対応していない演算を行うとTypeErrorになります。

この問題の解説ページを開く →

238finally節以降にreturn文が定義されていない関数の戻り値はどうなるか。

  1. ANone
  2. B0
  3. CFalse
  4. Dエラーになる
正解と解説を見る

正解:ANone

明示的な戻り値の指定がない関数の返り値はNoneになります。

この問題の解説ページを開く →

239データと機能を1つにまとめる仕組みであり新しいオブジェクトの雛形となるものはどれか。

  1. A関数
  2. Bクラス
  3. Cインスタンス
  4. D変数
正解と解説を見る

正解:Bクラス

データと機能を1つにまとめオブジェクトの雛形となるものをクラスと呼びます。

この問題の解説ページを開く →

240クラスから生成されたオブジェクト(実体)のことを何と呼ぶか。

  1. Aメソッド
  2. Bインスタンス
  3. Cクラス変数
  4. D引数
正解と解説を見る

正解:Bインスタンス

クラスを基にして効率的に生成されたオブジェクトをインスタンスと呼びます。

この問題の解説ページを開く →

241Pythonにおけるクラス定義の命名に関する一般的な慣例(ルール)として正しいものはどれか。

  1. Aすべて小文字で記述する
  2. B各単語の頭文字を大文字にする
  3. C単語間をアンダースコアで繋ぐ
  4. D先頭に必ずクラス名を付ける
正解と解説を見る

正解:B各単語の頭文字を大文字にする

Pythonのクラス名は各単語の頭文字を大文字にするのが慣例です。

この問題の解説ページを開く →

242クラスで保持する変数でそのクラスのすべてのインスタンスで共有される変数を何というか。

  1. Aインスタンス変数
  2. Bローカル変数
  3. Cグローバル変数
  4. Dクラス変数
正解と解説を見る

正解:Dクラス変数

すべてのインスタンスで共有される変数をクラス変数と呼びます。

この問題の解説ページを開く →

243クラス変数を定義する正しい場所はどこか。

  1. A親関数の直下
  2. B__init__メソッドの中
  3. Cクラスの直下
  4. Dすべてのメソッドの外側のさらに外
正解と解説を見る

正解:Cクラスの直下

クラス変数はクラスの直下に通常の変数のように記述して定義します。

この問題の解説ページを開く →

244インスタンスごとに固有の値を保持する変数を何というか。

  1. Aインスタンス変数
  2. Bクラス変数
  3. C共有変数
  4. D特殊変数
正解と解説を見る

正解:Aインスタンス変数

インスタンスごとに固有のデータを保持する変数をインスタンス変数と呼びます。

この問題の解説ページを開く →

245インスタンスを初期化するための特殊メソッドの名称はどれか。

  1. A__del__
  2. B__new__
  3. C__init__
  4. D__str__
正解と解説を見る

正解:C__init__

インスタンスの初期化には__init__()メソッドを使用します。

この問題の解説ページを開く →

246__init__()メソッドにおいて、そのクラスのインスタンス自身を表す第1引数の名前として推奨される慣例はどれか。

  1. Athis
  2. Bself
  3. Cmy
  4. Dobject
正解と解説を見る

正解:Bself

クラスのインスタンスを表す第1引数には慣例としてselfを用います。

この問題の解説ページを開く →

247クラス定義においてクラスに定義された関数のことを何と呼ぶか。

  1. Aメソッド
  2. B引数
  3. Cインスタンス
  4. Dオブジェクト
正解と解説を見る

正解:Aメソッド

クラスの内部に定義された関数をメソッドと呼びます。

この問題の解説ページを開く →

248メソッド内からインスタンスを通じてクラス変数を参照する場合、変数名の先頭に付けるものはどれか。

  1. Acls.
  2. Bなし(そのまま記述)
  3. Cself.
  4. Dclass.
正解と解説を見る

正解:Cself.

メソッド内でクラス変数を参照する際にもself.を付ける必要があります。

この問題の解説ページを開く →

249クラスのメソッドを呼び出す際、第1引数(self)への値の渡し方について正しいものはどれか。

  1. A手動でインスタンスを渡す
  2. B手動でselfと記述する
  3. CPythonが自動的にインスタンスを渡す
  4. D引数を渡す必要は一切ない
正解と解説を見る

正解:CPythonが自動的にインスタンスを渡す

Pythonが自動的に呼び出し元のインスタンスを第1引数として渡します。

この問題の解説ページを開く →

250「変数名 = クラス()」という書式で行う操作を何というか。

  1. Aカプセル化
  2. Bインスタンス化
  3. Cデシリアライズ
  4. Dオーバーライド
正解と解説を見る

正解:Bインスタンス化

クラスからインスタンスを生成する操作をインスタンス化と呼びます。

この問題の解説ページを開く →

251メソッド内にインスタンス変数と同名のローカル変数がある場合、それらの関係はどうなるか。

  1. A同じ変数として扱われる
  2. Bエラー(NameError)になる
  3. C別の変数として扱われる
  4. Dローカル変数が優先されインスタンス変数が消滅する
正解と解説を見る

正解:C別の変数として扱われる

同名の変数であってもメソッド内のローカル変数とインスタンス変数は別物です。

この問題の解説ページを開く →

252メソッド内でインスタンス変数を参照または変更する際に変数名の先頭に必要な記述はどれか。

  1. Athis.
  2. Bmy.
  3. Cself.
  4. Dme.
正解と解説を見る

正解:Cself.

インスタンス変数の参照・変更には変数名の先頭にself.を付けます。

この問題の解説ページを開く →

253__init__(my)のように、第1引数にself以外の名前(myなど)を使用した場合の挙動として正しいものはどれか。

  1. A文法エラー(SyntaxError)になる
  2. B正常に実行できるが一般には推奨されない
  3. C実行時にエラー(TypeError)になる
  4. D無視されて自動的にselfに置き換わる
正解と解説を見る

正解:B正常に実行できるが一般には推奨されない

self以外を使うことは間違いではなく正常に実行できますが推奨されません。

この問題の解説ページを開く →

254メソッド内で同一クラスに定義された他のメソッドを呼び出す正しい方法はどれか。

  1. Aメソッド名()
  2. Bクラス名.メソッド名()
  3. Cself.メソッド名()
  4. Dthis.メソッド名()
正解と解説を見る

正解:Cself.メソッド名()

同一クラス内の他のメソッドを呼び出す際は先頭にself.を付けます。

この問題の解説ページを開く →

255Pythonにおいて定義済みのクラスを基にして新しいクラスを作成する仕組みを何というか。

  1. Aカプセル化
  2. Bクラスの継承
  3. Cインスタンス化
  4. D初期化
正解と解説を見る

正解:Bクラスの継承

定義済みのクラスを基にして別のクラスを作成することをクラスの継承と呼びます。

この問題の解説ページを開く →

256クラスを継承する際において継承元になるクラスを何と呼ぶか。

  1. A派生クラス
  2. B基底クラス
  3. Cサブクラス
  4. D子クラス
正解と解説を見る

正解:B基底クラス

継承の元になるクラスを基底クラスと呼びます。

この問題の解説ページを開く →

257クラスを継承する際において継承先になる新しく作成されたクラスを何と呼ぶか。

  1. A派生クラス
  2. B基底クラス
  3. Cスーパークラス
  4. D親クラス
正解と解説を見る

正解:A派生クラス

継承先になるクラスを派生クラスと呼びます。

この問題の解説ページを開く →

258派生クラスを定義する際に基底クラスをどのように指定するか。

  1. Aclass 派生クラス extend 基底クラス:
  2. Bclass 派生クラス 基底クラス:
  3. Cclass 派生クラス: 基底クラス
  4. Dclass 派生クラス(基底クラス):
正解と解説を見る

正解:Dclass 派生クラス(基底クラス):

派生クラス定義時の括弧「()」内に基底クラスを指定します。

この問題の解説ページを開く →

259基底クラスと同名のクラス変数やメソッドを派生クラスで定義した場合の挙動として正しいものはどれか。

  1. Aエラー(NameError)になる
  2. B基底クラスの内容で上書きされる
  3. C両方が別名で保存される
  4. D派生クラスの内容で上書きされる
正解と解説を見る

正解:D派生クラスの内容で上書きされる

同名の変数やメソッドを定義した場合は派生クラス側で上書きされます。

この問題の解説ページを開く →

260引数に指定したオブジェクトの型(クラス)を返す関数はどれか。

  1. Atype()
  2. Bisinstance()
  3. Ctypeof()
  4. Disinstanceof()
正解と解説を見る

正解:Atype()

type()関数は引数に指定したオブジェクトの型を返します。

この問題の解説ページを開く →

261オブジェクトが特定の型やクラス(または基底クラス)のインスタンスであるか否かを判定してTrueかFalseを返す関数はどれか。

  1. Aisinstance()
  2. Btype()
  3. Cissubclass()
  4. Distypeof()
正解と解説を見る

正解:Aisinstance()

オブジェクトの型やクラスの判定にはisinstance()関数を使います。

この問題の解説ページを開く →

262クラスそのものを対象にしてあるクラスが別のクラスから派生している(子クラスである)ことを判定する関数はどれか。

  1. Aisinstance()
  2. Btype()
  3. Cisinstanceof()
  4. Dissubclass()
正解と解説を見る

正解:Dissubclass()

クラスの派生関係を判定するにはissubclass()関数を使用します。

この問題の解説ページを開く →
Python3エンジニア認定基礎試験の全分野一覧へ戻る