クラスとインスタンスについて説明します。クラスとは本来「同じ種類の集まりとして分類する」という意味です。学校のクラスも同じような学力の生徒を分類したいものと考えることができます。
しかし、pythonでのクラスはかなり違った意味合いが含まれれます。属性や動作の定義された設計図にたとえられます。共通の属性や動作を持つものを定義するということで、クラスと呼ばれます。
これに対してインスタンスは「具体的なもの」、「実体」という意味で、クラスを使って、具体的なもの(オブジェクト)を作ったのがインスタンスです。

なぜクラスとインスタンスが重要か
オブジェクト指向のプログラミングには、クラスとインスタンスが重要だと言われます。
オブジェクト指向とは、プログラムを物体(オブジェクト)の集まりと考えることです。ゲームのプログラムを書く場合は、各キャラクターについてプログラムを書くということになります。深層学習の場合は、人間の脳をオブジェクトと考えるということだと思います。
pythonでオブジェクトとはインスタンスのことで、インスタンスを作るための設計図がクラスといえます。クラスでいろいろな性質や動作を定義して、そこに具体的なデータを入れてインスタンス(オブジェクト)となります。
クラスは、属性と動作の2つからできています。犬の場合だと、名前、色、年齢などです。動作は、吠えるとか歩くとかです。
実際のプログラム
属性(データ)は、__init__で表し、動作(メソッド)は名前を付けて定義します。自分自身という意味でselfを使います。
犬というクラスで、属性を犬と名前とし、動作を「ワンワンと吠えた!」と出力するとすると以下になります。
これに実際の犬の情報をいれれば、犬が物体として動きます。「ポチがワンワンと吠えた」、といった動きです。
インスタンスは、
という形で指定します。属性の内容は
などとします。動作は
です。
ポチと太郎についてインスタンスを作ると以下のようになります。
出力は、以下になります。
