Pythonでは、クラスとインスタンス化は非常に重要な概念です。クラスはデータや処理の定義をまとめた雛型のようなものであり、これらのデータやメソッドを使うためには「インスタンス」と呼ばれるものを生成する必要があります。
インスタンスとは
インスタンスとは、クラスを実体化したものです。ひとつのクラスに対してインスタンスは複数生成することができ、それぞれのインタンスは別々のデータをもちます。
インスタンスの生成
Pythonでクラスのインスタンスを生成するには、クラス名に括弧を付けて呼び出すことで行われます。以下のサンプルプログラムを用いてクラスのインスタンスを生成する方法を説明します。
class MyClass:
def set_value(self, text): # クラス内の value 変数に値を代入するメソッド
self.value = text
def print_value(self): # 変数 value の値を表示するメソッド
print(self.value)
a = MyClass() # MyClass のインスタンスを生成
a.set_value("abc") # 変数 value に文字列 "abc" を代入
a.print_value() # abc
上の例では、MyClass()を実行することによりインスタンスを生成しています。生成されたインスタンスは変数aに代入され、変数aを用いて、インスタンスのメソッドset_valueとprint_valueを使用しています。
インスタンスの初期化
インスタンスの生成後にset_valueメソッドを用いて変数valueの値を初期化します。しかし、このような記述の方法はあまり良くありません。たとえば、複数のインスタンスを生成するとき、何度もvalueの値を初期化しなくてはならず、コードの記述量が増えたり、初期化をし忘れたりしてしまう可能性があります。
このような問題を解決するために、クラスの初期化が必要なときは初期化メソッドを使用します。
class MyClass:
def __init__(self, text): # インスタンス生成時に自動的に呼ばれるメソッド
self.value = text
def print_value(self): # 変数 value の値を表示するメソッド
print(self.value)
a = MyClass("abc") # MyClass のインスタンスを生成
a.print_value() # abc
上の例では、MyClass("abc")でインスタンスを生成しています。このとき__init__()自動的に実行されます。インスタンス生成時に指定した引数"abc"は__init__()の2番目の引数textに代入されます。
以上がPythonでのクラスのインスタンス化についての基本的な説明です。この概念はオブジェクト指向プログラミングにおいて非常に重要なので、しっかりと理解しておきましょう。.