インスタンス変数とクラス変数の違い
これまでself.nameのようにインスタンスごとに持たせてきたデータは「インスタンス変数」と呼ばれ、インスタンスごとに別々の値を持てます。一方、クラスの直下(__init__の外)に書いた変数は「クラス変数」と呼ばれ、そのクラスから作られたすべてのインスタンスで共有される、いわば「みんな共通の情報」になります。「犬という種族はみんなイヌ科である」というような、個体ごとに変わらない情報を持たせるのに向いています。
⚠️ 注意:クラス変数はすべてのインスタンスで共有されるため、うっかりミュータブル(変更可能)なリストなどをクラス変数にしてしまうと、1つのインスタンスでの変更が他のインスタンスにも影響してしまうことがあります。個体ごとに変わりうる情報は、必ずインスタンス変数として持たせるようにしましょう。