Pythonのクラスの定義

投稿日: 2024年3月31日

Pythonでクラスを定義するには、classキーワードを使用します。
クラスはオブジェクト指向プログラミングの基本的な構成要素であり、データ(属性)とそれを操作するための関数(メソッド)をカプセル化します。
Pythonのクラスは新しい型を作成し、その型の新しいインスタンスを生成するためのテンプレートのようなものです。

クラスの基本的な定義

基本的なクラス定義は以下のようになります。

class MyClass:
    def __init__(self, value):
        self.my_attribute = value

    def my_method(self):
        return f"このオブジェクトの属性は{self.my_attribute}です。"

この例では、MyClassという名前のクラスを定義しています。クラスには2つの関数、つまりメソッドが含まれています。

init: 特殊メソッドで、クラスのインスタンスが作成されたときに自動的に呼び出されます。このメソッドはクラスの初期化を行います。
selfは現在のインスタンスを参照するためのパラメータで、クラスの他のメソッドにも第一引数として渡されます。valueはこのクラスのインスタンスを作成する際に外部から渡される値です。
my_method: インスタンスが持つ任意のメソッドで、selfを通じてインスタンス自身の属性や他のメソッドにアクセスできます。

クラスのインスタンス化

クラスからインスタンスを作成するには、クラス名に続けて括弧を付けて呼び出します。必要に応じて、初期化メソッドに引数を渡すことができます。

class MyClass():
    def __init__(self, value):
        self.my_attribute = value

    def my_method(self):
        return f"このオブジェクトの属性は{self.my_attribute}です。"

my_object = MyClass("こんにちは")

この例では、MyClassの新しいインスタンスが作成され、そのmy_attribute属性に”こんにちは”が設定されます。

インスタンスメソッドの呼び出し

インスタンスのメソッドを呼び出すには、インスタンス名に続けて.(ドット)を使ってメソッド名を指定し、括弧を付けて呼び出します。

class MyClass():
    def __init__(self, value):
        self.my_attribute = value

    def my_method(self):
        return f"このオブジェクトの属性は{self.my_attribute}です。"

my_object = MyClass("こんにちは")

result = my_object.my_method()
print(result)

このコードは”このオブジェクトの属性はこんにちはです。”を出力します。

__init__は何ですか?

__init__って何ですか?

インスタンスを生成する際に自動的に呼び出される特別なメソッドになるよ。

initメソッドは、Pythonにおけるクラスのコンストラクタとして機能し、クラスの新しいインスタンスが作成されるたびに自動的に呼び出される特別なメソッドです。
このメソッドは主に、オブジェクトの初期化、つまりインスタンス変数の初期設定やオブジェクトの初期状態の設定に使用されます。

__init__メソッドの基本構造

class ClassName:
    def __init__(self, parameter1, parameter2):
        self.attribute1 = parameter1
        self.attribute2 = parameter2

ここで、ClassNameはクラス名、parameter1とparameter2はこのクラスの新しいインスタンスを作成する際に外部から渡される引数です。
selfは現在のインスタンスを指す参照であり、クラス内の他のメソッドからインスタンス変数にアクセスするために使用されます。

__init__メソッドの使用例

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"こんにちは、私の名前は{self.name}です。{self.age}歳です。")

# Personクラスのインスタンスを作成
person1 = Person("Alice", 30)

# greetメソッドを呼び出し
person1.greet()

この例では、Personクラスに__init__メソッドを定義しています。
このメソッドは、Personクラスの新しいインスタンスが作成されるたびに、その人の名前と年齢をインスタンス変数nameとageに格納します。
その後、greetメソッドを通じて、その人の挨拶を出力できます。

特記事項

  • __init__メソッドは戻り値を持ちません(つまり、return文を使用して何かを返すことはできません)。
  • self以外の引数はオプションであり、必要に応じて任意の数の引数を__init__メソッドに渡すことができます。
  • __init__メソッドを定義しない場合、Pythonはデフォルトの__init__メソッドを使用しますが、その場合はクラスに特別な初期化処理は追加されません。
  • __init__メソッドを使用することで、クラスのインスタンスが作成された際に、そのインスタンスに必要なデータや状態を設定することができます。
    これはオブジェクト指向プログラミングにおいて非常に重要な概念です。

記事