Python3エンジニア認定基礎試験 用語解説
クラス変数とは
クラス本体の直下に書いて、そのクラスから作られる全インスタンスが同じ値を参照する変数。公式チュートリアルの class Dog では、直下の kind = 'canine' がこれに当たり、d.kind も e.kind も 'canine' になる。値を一か所で持つので、犬という種類に共通の情報など、個体ごとに変えない値の置き場所に向く。個体ごとに別の値を持つ変数はインスタンス変数と呼ぶ。
この記事の目次
まず押さえる結論
クラス変数は、Python3エンジニア認定基礎試験の「第9章 クラス」に出てくる用語です。書く場所で見分ける: class 文の直下に書いた kind = 'canine' のような代入がクラス変数です。コードの断片が示されたら、代入が __init__ の外のクラス本体にあるかを先に見ます。
情報源と編集区分
公式範囲を確認し、具体例・誤答例・判断手順は当サイトが編集。 一次情報確認日: 2026-09-18。
試験概要(公式)比較記事でさらに確認する
試験での問われ方
書く場所で見分ける
class 文の直下に書いた kind = 'canine' のような代入がクラス変数です。コードの断片が示されたら、代入が __init__ の外のクラス本体にあるかを先に見ます。
共有される結果を答える
d.kind と e.kind のように別々のインスタンスから読んでも同じ値になる、という結果を選ばせる形で出ます。片方のインスタンスだけ値が変わる選択肢は誤りです。
リストを置いたときの影響
クラス変数に members = [] のような可変オブジェクトを置き、self.members.append() で変更すると、同じリストが共有されているため他のインスタンスにも変化が現れます。
誤答しやすいポイント
クラス変数の問題で、誤答につながりやすい考え方です。
- クラス変数を、インスタンスごとに別の値を持つ変数だと取り違えること。公式チュートリアルは、クラス変数をそのクラスのすべてのインスタンスで共有される属性と説明している。
- 可変オブジェクトをクラス変数に置いて、append などで中身を変更したときの影響範囲。共有された同じオブジェクトが変わるので、どのインスタンスから見ても変化が現れる。
関連する確認問題
第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'とそれぞれ固有である。
同じ章で確認したい用語
到達チェック
- クラス変数を一文で説明できる
- 同じ章の似た用語と違いを説明できる
- 問題文の具体例から、クラス変数に関係する論点を拾える
- 関連問題を解き、誤答した選択肢の理由を確認できる
執筆: ミナト編集部(運営者情報を見る)