ここでその意味を説明する。以下の例をやってほしい。実は複素数2+3iを表している。その結果が(-5+12j)と表示されただろう。complexと出てきた。number(複素数)の略である。この複素数zの実部と虚部をそれぞれ取り出すことができる:z.realz.imagそれぞれ2.0と3.0というふうに表示されただろう。imagはimaginaryの略で虚部)複素数には「複素共役」という概念がある。虚部の符号を逆転させた複素数だ。複素共役を求めるには以下のようにやればよい:z.conjugate()すると2-3jと出てくるだろう。conjugateは「共役」を意味する英語である。()をつけるかは後で説明する。これらの命令をpythonは最初から知っていたかのように実行したということだ。これがオブジェクト指向である。pythonはあらかじめ「複素数」という概念を知っているのだ。この場合は実部の値や虚部の値)や操作(この場合は複素共役をとること等)をひっくるめてひとつの「複素数」という概念としてpythonは理解しているのだ。それを中心に据えて計算機言語を設計することをオブジェクト指向と呼ぶのだ。複素数とは何かということである。それは複素数の全てではない。複素数に付随する様々な概念や定義がある。それらもまとめて複素数という概念の一部としてパッケージ化して計算機に教えておくのである。それが複素数という「オブジェクト」の発想である。「zの複素共役を求める」という操作ができた。いろんなことができるようになる。丁寧に考えると,複素数という概念(データや操作)の抽象的な定義そのように定義された概念にあてはまる具体的なものという2つの意味がある。z=2+3jと打った時に作られるzというものは後者である。前者はtype(z)と打った時に現れる"complex"である。z=2+3jが作られるのだ。後者(その概念にあてはまる具体的なもの)を「インスタンス」と呼ぶ。complexはクラスz=2+3jはそのインスタンスである。