Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonにおけるクラス、インスタンス、クラスインスタンスなど

【Python入門】クラス、インスタンス、クラスインスタンス、メソッドオブジェクトとは?それらの用語の使い分けとは?

Pythonの用語「クラス」、「インスタンス」、「クラスインスタンス」、「メソッドオブジェクト」の意味と使い分けの解説

今回はPythonでよく使われる用語のうち、「クラス」、「インスタンス」、「クラスインスタンス」、「メソッドオブジェクト」という4つの用語の解説です。

「クラス」、「インスタンス」、「クラスインスタンス」の意味やそれぞれの違いとは?

まず、「クラス」、「クラスインスタンス」、「インスタンス」という3つの用語の言葉の違いをまとめると、次のようになります。

クラスを書く(書き方:class MyClass:~)
↓
書いたクラスを実行する
↓
そのクラスの、「クラスオブジェクト」ができる
↓
そのクラスオブジェクトを呼び出す(書き方:MyClass())
(この呼び出しのことを、「インスタンス化」とも言う。このとき、クラスが__init__を定義していれば、この__init__も呼び出される)
↓
クラスであるMyClassの「クラスインスタンス」ができる
(「クラスインスタンス」であって、「クラスのインスタンス」ではない)
↓
x = MyClass()
(これは、右辺でクラスオブジェクトを呼び出し、その結果、クラスインスタンスが作成され、そのクラスインスタンスを変数xに代入するという意味)
↓
このxは、「クラスのインスタンス」または「インスタンス」または「インスタンスオブジェクト」と呼ばれるものであって、上述の「クラスインタンス」ではない。

メソッドオブジェクとは?関数オブジェクトの違いとは?

厳密に言えば、そもそもメソッドまたはメソッドオブジェクトとは、

オブジェクトに “属している” 関数

公式ドキュメント:インスタンスオブジェクト

のことです。

そしてPythonプログラムにけるデータはほぼなんでもかんでもオブジェクトという仕組みになっているので、乱暴にいってしまえば、関数ならばなんでもかんでもメソッドまたはメソッドオブジェクトとも言えそうです。

しかし、公式ドキュメント上でも特に明示されている場合を除いては、

クラスのインスタンスオブジェクトのメソッドだけを意味するもの

公式ドキュメント:インスタンスオブジェクト

とされていることもあります。

もし仮に「クラスのインスタンスオブジェクトのメソッドだけを意味するもの」というこの方針に従うのならば、次のコードの場合は、

class MyClass:
    (略)


    def f(self,):
        (略)

    (略)

my_instance = MyClass()
MyClass.f
my_instance.f
my_instance.f()
MyClass.f関数オブジェクトであってメソッドオブジェクトではない
my_instance.fメソッドオブジェクト
my_instance.f()メソッドオブジェクトの呼び出し

このような用語の使い分けとなります。

しかしこれはあくまで上述のような「クラスのインスタンスオブジェクトのメソッドだけを意味するもの」という方針に従った場合の使い分けになりますし、そもそもその方針を採用するかどうかは時と場合によります。公式ドキュメントでも解説の便宜上その方針をその場面で採用しているだけでしょう。そのような方針を採用しないことが絶対に間違いというわけではないでしょう。

プログラミング学習はどうしてもわかりにくく時間がかかります。そこでできるだけ早く効率的に学習する方法として動画学習をおすすめします。次の記事ではおすすめ動画を5つ紹介していますので参考にしてください。