このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】独自のクラスの定義

独自のクラスの定義

 組み込み型だけではカバーできない、アプリケーション固有の機能や情報をまとめるために、プログラマ自身が新たなクラスを定義する必要が生じます。独自のクラスを作成することで、データと処理を一体化し、プログラムの構造をより論理的に整理できます。
 ここでは、独自のクラス定義の背景、基本的な構文、命名規則などを解説し、実際に空のクラスを定義してインスタンスを生成する例を詳しく説明します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.独自のクラス定義の基本

1.1. 独自のクラス定義が必要な理由

 既存の組み込み型やライブラリのクラスは汎用的な機能を提供しますが、特定のアプリケーションでは専用のデータ構造や振る舞いが求められます。たとえば、ショッピングサイトでは商品や顧客、ゲームではキャラクターやアイテムなど、個々のドメインに合わせたオブジェクトが必要となります。こうした場合、独自にクラスを定義して、必要な情報や処理をまとめることが有用です。

1.2. クラス定義の基本構文

 Pythonにおけるクラス定義は、関数定義と同様にコロン(:)の後にインデントされたブロックで記述します。最も基本的な形は以下の通りです。

class クラス名:
    文

 また、クラス内に何も記述しない場合は、pass 文を使って空のクラスを定義する必要があります。たとえば、次の例は何も持たない空のクラスを定義しています。

class Example:
    pass

1.3. 命名規則とスタイルガイド

 PEP8では、クラス名は各単語の先頭を大文字にする「UpperCamelCase」(キャメルケース)を推奨しています。変数名や関数名とは異なり、クラス名は視覚的に区別しやすくするためのルールが設けられています。以下の表は、命名に関する一般的な推奨事項を示しています。

用途推奨される命名形式
変数・関数lower_snake_case
クラスUpperCamelCase

2.独自クラスの実践例とインスタンス生成

2.1. 空のクラス定義の実例

 ここでは、独自のクラス定義の例として、車両に関する情報をまとめるためのクラスを考えます。シンプルな例として、クラス内にデータ属性やメソッドを追加せず、空のクラスを定義してみます。

class Car:
    # Carクラスは車両を表すための設計図ですが、
    # 現段階では属性やメソッドは定義していません。
    pass

2.2. インスタンス生成と表示の詳細解説

 定義したクラスからオブジェクト(インスタンス)を生成するには、クラス名に続けて括弧内に必要な引数(今回は不要なので空)を記述します。生成されたオブジェクトは変数に保存して、その後も利用可能です。以下は、Car クラスのインスタンスを生成し、変数 vehicle に代入して表示する例です。

# Carクラスからオブジェクトを生成し、変数vehicleに保存する
vehicle = Car()

# 生成されたオブジェクトの内容を表示する
print(vehicle)

このプログラムを実行すると、出力結果は次のようになります。

<__main__.Car object at 0x00000276B0E3B3E0>

 この出力は、「__main__ モジュールに定義された Car クラスから生成されたオブジェクト」であることを示しています。0x00000276B0E3B3E0 の部分はオブジェクトのメモリアドレスであり、毎回異なります。つまり、空のクラスであっても、Pythonは内部でオブジェクトとして管理していることがわかります。

まとめ

 ここでは、アプリケーション固有の情報や機能をまとめるために、独自のクラスを定義する必要性とその基本的な記述方法について解説しました。クラス定義の基本構文、空のクラスを作成する方法、そして命名規則など、初めて独自クラスを定義する際に知っておくべきポイントを整理しました。これらの基礎を理解することで、より複雑な機能を持つクラスの設計や、アプリケーションの拡張に役立つオブジェクト指向プログラミングの実践へとつながります。