レッスン1 / 3問目

『クラス変数』

このレッスンではクラス変数について学習していきましょう。

これまでのレッスンではインスタンスごとにの個別の変数であるインスタンス変数が登場しました。今回はクラスにおいて共通で使用することができるクラス変数について学習していきましょう。

インスタンス変数は犬で言うところの名前や性別に該当するという説明をしました。ではどのようなものがクラス変数に該当するのでしょうか。これには例えば「鳴き声」などが挙げられます。これは犬であれば共通で「わん」という鳴き声をもつためです。このようにクラス変数にはそのクラス全てに共通する性質を指定します。

インスタンス変数では「self.name」というようには変数の前に「self」を記述しましたが、クラス変数はクラスで共通の変数であるため「self」は必要ありません。また、インスタンス変数はコンストラクタの直下に記述していましたが、クラス変数はクラスの直下に記述します。

では例を見ていきましょう。以下の例ではクラス変数「cry」に"わん"を代入し、barkメソッド内で「cry」を呼び出しています。

  1. class Dog:
  2.     cry = "わん" # クラス変数
  3.     def bark(self):
  4.         print("ポチは" + Dog.cry + "と吠えた")
  5.         # 「ポチはわんと吠えた」と出力される

このようにクラス変数はクラスの直下に記述します。そして、クラス変数を呼び出す際は「クラス名.変数名」と記述する点に注意しましょう。

まとめ

ではクラス変数のポイントを以下にまとめます。

  • クラス変数はクラスで共通の変数
  • クラスの直下に記述する
  • 「クラス名.変数名」という形で呼び出す

ではこのレッスンは以上となります。練習問題にチャレンジしましょう。

Lesson1

エディタにCatクラスがあります。これを完成させていきましょう。

まずはクラス変数を作成してください。変数には文字列「ニャー」を格納してください。変数名はここではcryとしましょう。

Lesson2

インスタンス変数とクラス変数を用いてCatクラスの中あるscreamメソッドを以下の「ミケはニャーと鳴いた」を出力するように定義してください。
記述が終わったら判定ボタンを押してください。出力が正しければ正解となります。

ミケはニャーと鳴いた

Last updated:2019/10/12

ミケはニャーと鳴いた
  1. class Cat:
  2. # Lesson1 ここにクラス変数を記述してください
  3. cry = "ニャー"
  4. def __init__(self, name):
  5. self.name = name
  6. def scream(self):
  7. # Lesson2 screamメソッドを完成させてください。
  8. print(self.name + "は" + Cat.cry + "と鳴いた")

  9. cat = Cat("ミケ")
  10. cat.scream()
main.py
設定
g
n
i
d
a
o
L