AI資格ドリル
資格を選ぶ↓

Python3エンジニア認定基礎試験 用語解説

インスタンス変数とは

__init__ の中で self.名前 = 値 と代入して作り、インスタンスごとに別々の値を持つ変数。公式チュートリアルでは self.name = name がこれに当たり、d.name は 'Fido'、e.name は 'Buddy' になる。同じクラスから作っても、一方を書き換えてももう一方には影響しない。全インスタンスで同じ値を共有したい場合はクラス変数を使う。

まず押さえる結論

インスタンス変数は、Python3エンジニア認定基礎試験の「第9章 クラス」に出てくる用語です。書く場所で見分ける: __init__ の中で self.name = name のように self へ代入した変数がインスタンス変数です。代入先が self.名前 の形になっているかを手がかりにします。

情報源と編集区分

公式範囲を確認し、具体例・誤答例・判断手順は当サイトが編集。 一次情報確認日: 2026-09-18。

試験概要(公式)

比較記事でさらに確認する

試験での問われ方

01

書く場所で見分ける

__init__ の中で self.name = name のように self へ代入した変数がインスタンス変数です。代入先が self.名前 の形になっているかを手がかりにします。

02

値が別々になる結果を答える

d.name は 'Fido'、e.name は 'Buddy' のように、同じクラスから作ったインスタンスでも値が独立している、という結果を選ばせる形で出ます。

03

書き換えの影響範囲

一つのインスタンスの self.name を書き換えても、別のインスタンスの name には影響しません。他のインスタンスにも現れる変化はクラス変数の話です。

誤答しやすいポイント

インスタンス変数の問題で、誤答につながりやすい考え方です。

  • self. を付けずに __init__ の中で書いた代入を、インスタンス変数だと思い込むこと。インスタンスに属する値にするには self.名前 への代入が必要になる。
  • インスタンス変数の書き換えが他のインスタンスにも及ぶと考えること。インスタンスごとに固有のデータなので、他のインスタンスの値は変わらない。

関連する確認問題

第9章 クラス / クラスの定義とインスタンス

class Team: members = [] のように定義し、__init__ では self.name = name だけを行い、メソッド add_member では self.members.append(person) を実行する設計にした。異なる名前で作成した複数のTeamインスタンスでadd_memberを呼んだときに起こることとして、正しいものはどれか。

正解は「membersはクラス変数としてすべてのインスタンスで共有されるため、あるインスタンスのadd_memberで追加した要素が他のインスタンスのmembersにも現れる」である。公式チュートリアルは、クラス変数を『そのクラスのすべてのインスタンスによって共有される属性』、インスタンス変数を『それぞれのインスタンスについて固有のデータ』と説明しており、class文の直下でmembers = []のように書いた変数はクラス変数になる。self.membersに対してappendのような変更操作を行うと、共有された同じリストオブジェクトが変更されるため、他のインスタンスから見ても変化が現れる。一方、self.name = nameのように__init__の中でselfへ代入した変数はインスタンス変数であり、インスタンスごとに固有のデータになるため、他のインスタンスのnameには影響しない。公式チュートリアルは、リストや辞書のような可変オブジェクトをクラス変数にすると、全インスタンスで共有されてしまう場合があると注意している。

第9章 クラス / クラスの定義とインスタンス

class Dogの中でkind = 'canine'と書き、__init__の中でself.name = nameと書いた。d = Dog('Fido')、e = Dog('Buddy')としたとき、正しい説明はどれか。

正解は「kindは全インスタンスで共有されるクラス変数で、nameはインスタンスごとに固有のインスタンス変数である」である。公式チュートリアル9.3.5は、インスタンス変数はそれぞれのインスタンスについて固有のデータのためのもの、クラス変数はそのクラスのすべてのインスタンスによって共有される属性やメソッドのためのものだと説明している。この例では、d.kindもe.kindも'canine'で共有され、d.nameは'Fido'、e.nameは'Buddy'とそれぞれ固有である。

同じ章で確認したい用語

到達チェック

  • インスタンス変数を一文で説明できる
  • 同じ章の似た用語と違いを説明できる
  • 問題文の具体例から、インスタンス変数に関係する論点を拾える
  • 関連問題を解き、誤答した選択肢の理由を確認できる

執筆: ミナト編集部(運営者情報を見る)