>>572
ほんとはオブジェクト指向なんて、初心者のうちから叩き込まれても何が嬉しいのか分からないんだよ。
だから今はあっさり流して、いつかプログラムが自分でも結構かけるようになった日に見返して、
なるほど、そういう意味だったんだと気づけたらそれでいいのだけど。

※上級者の方へ: 以下、厳密でないのは分かっている。間違いの指摘や補足は、初心者を困らせないような前置きをしてから頼む。

君は、日付を扱いたい。
君が簡単に日付を扱えるように、Pythonの作者たちが日付を扱うための「型」としてdateを用意してくれている。
「データ型」と「型」は同じものと考えていい。

そして、date型を作るためにはどうすればいいか? datetime.dateを関数呼び出しのように使えばいい。
それが「見方を変えると、datetimeが持っているdateという関数のようにも解釈できます」の意味。

別に、makeDate()でもdateFactory()でも名前なんて何でもよかったんだけど、
Pythonでは、型の名前を関数呼び出しのようにすると型を作れる、というルールになっている。
(他にもそういうルールになってる言語も結構あるから、そこそこメジャーなルールと言えるけど)

date()を呼び出しのようにすると、Pythonでは、
1. date型を作り出す
2. date.__init__()って関数を、最初の引数に1で作り出した型、第二引数以降にdate()の引数を入れて呼び出す
ということが行われる。
ここで、date.__init__()関数は、dateを使うための準備をするための関数で「初期化メソッド」と呼ばれている。

ところで、dateがどういう風にできているのか、というのを見ると、
dateはこんな関数を持ってるよ、といった内容の「クラス定義」だけが書いてある。

実際に日付のデータを持っているのはdateそのものではなく、「date()で作り出したもの」のみ。
そういう「クラス定義」から作り出したものを「インスタンス」と呼んでおり、インスタンスが日付のデータを実際に持っている。
つまり、「クラス定義」という作り方マニュアルを使って、作り出した「実体」が「実際のデータ」を持っているインスタンス、ということだ。

……って、わっかんねーよなぁ。