10章オブジェクトとクラス

不思議なものなんてない。不思議なのはあなたの目だ。

──エリザベス・ボウエン

ものを手に取れ。それに何かをしろ。

それに何かほかのことをしろ。

──ジャスパー・ジョーンズ

 今までさまざまな箇所で触れたように、Pythonに含まれるものは、数値から関数に至るまで、すべてオブジェクトだ。しかし、Pythonは、オブジェクトのからくりの大半を特殊構文によって隠している。num = 7と書けば、値7の整数型のオブジェクトを作って、numという名前にオブジェクト参照を代入できる。オブジェクトの中を見なければならなくなるのは、独自のオブジェクトを作りたいときと、既存のオブジェクトの動作を変えたいときだけだ。両方の方法は、ともにこの章で説明する。

10.1 オブジェクトとは何か

 オブジェクトは、データ(変数、属性と呼ばれる)とコード(関数、メソッドと呼ばれる)の両方を含むカスタムデータ構造である。何らかの具体的なものの実例(インスタンス)を表現する。オブジェクトを名詞、そのメソッドを動詞と考えるとよい。オブジェクトは個別のものを表し、メソッドはほかのものとどのようなやり取りをするかを定義する。

 たとえば、3章で示したように、値7を持つ整数オブジェクトは加算や乗算などのメソッドを持つオブジェクトである。つまり、Pythonのどこかに整数のクラスがあり、78はそこに属している。'cat''duck'などの文字列も、Pythonのオブジェクトであり、5章で説明したcapitalize()replace()などのメソッドを持つ。

 モジュールとは異なり、オブジェクト(インスタンスともよく呼ばれる)は同時に複数持つことができる。それらのオブジェクトは、それぞれ異なる属性を持っていてよい。オブジェクトは、コードが放り込まれた超データ構造と言うことができるだろう。 ...

Get 入門 Python 3 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.