Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

【Pythonお悩み解決】Pythonのオブジェクトとクラスの関係

PyQチームのtsutomuです。
今日は、クエスト「オブジェクト指向の特徴を知ろう」の1問目に関連して、オブジェクトとクラスの関係について簡単に説明します。

オブジェクトと型

Pythonで扱うすべての値は、オブジェクトです。数値の0や、文字列の'abc'などがオブジェクトです。

オブジェクトの種類を(type)と呼びます。 たとえば、0は整数であるint型、'abc'は文字列であるstr型です。

※ Pythonで標準で使える型は「Python公式ドキュメントの「組み込み型」」で確認できます。

オブジェクトの型は、type関数 で調べられます。 たとえば、type(0)を実行すると<class 'int'>となり、int型であることがわかります。

オブジェクトとクラス

クラスは型の情報を定義したものです。
str型はstrクラス、int型はintクラスとして定義されています。
class構文を使って、自分で新しいクラスを作ることもできます。
オブジェクトは、型が定義されたクラスから作成するため、「クラス=設計図」「オブジェクト=実体」と言えます。
クラスからオブジェクトを作成することを「クラスをインスタンス(実体)化する」といいます。
クラスから作成したオブジェクトのことを「インスタンス」と呼ぶこともあります。

下図は、人を定義したHumanクラスから、オブジェクト(インスタンス)を作成する例です。
この図のインスタンスがオブジェクトです。

seniorchildは以下のように作成できます。

# 100歳のおじいさん
senior = Human()
senior.age = 100
senior.last_name = '山田'
senior.first_name = '太郎'

# 10 歳の子供
child = Human()
child.age = 10
child.last_name = '山田'
child.first_name = '花子'

Pythonでは、クラスもtype型のオブジェクト

ちなみに、Pythonでは、クラス自体もtype型のオブジェクトです。
たとえば「type(Human)」を実行すると<class 'type'>となり、Humanクラスがtypeクラスから作られたオブジェクトだとわかります。

クラスと型という言葉は同じように使えますが、言葉の使い方について少し補足します。
オブジェクトを作成するときは、クラスという言葉を使います。
オブジェクトの種類をいうときは、型という言葉を使います。
これは厳密なものではないので、オブジェクトの種類をクラスと言っても間違いではありません。

まとめ

  • オブジェクトは、クラスをインスタンス(実体)化したものです。
  • クラスは、オブジェクトの型です。
Copyright ©2017- BeProud Inc. All rights reserved.