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

【Python入門】オブジェクトの生成

オブジェクトの生成

 Pythonにおけるオブジェクトの生成は、クラスという設計図をもとに新たなインスタンス(オブジェクト)を作り出す基本的な操作です。生成されたオブジェクトは、変数に保存して後から利用できたり、関数の引数として渡すことも可能です。ここでは、組み込み型のオブジェクト生成と、カスタムクラスを使ったオブジェクト生成の方法について、具体例と詳細な解説を交えながら説明していきます。

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

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

1.オブジェクト生成の基本原則

1.1. オブジェクト生成の文法と動作

 Pythonでは、オブジェクトを生成する際、クラス名に続けて括弧内に引数を記述します。この記法は、まるで関数を呼び出すかのような見た目です。例えば、あるクラスが定義されている場合、

クラス名(引数, …)

 と記述することで、そのクラスのインスタンスが生成されます。生成時に渡された引数は、クラス内で定義された初期化メソッド(__init__)に渡され、オブジェクトの状態を初期化する役割を果たします。

1.2. オブジェクトの保存と再利用

 生成されたオブジェクトは、すぐに式の中で使用することも、変数に保存して後から参照することもできます。変数に保存する場合、

変数名 = クラス名(引数, …)

 という形で記述し、保存されたオブジェクトを介してその機能や属性にアクセスすることが可能になります。これにより、オブジェクトの再利用や管理が容易になります。

2.組み込み型によるオブジェクト生成

2.1. 組み込み型と対応するクラス

 Pythonには、整数、浮動小数点数、文字列、リスト、タプル、集合、辞書など、標準で用意されている組み込み型が多数存在します。これらの型も、実はそれぞれ対応するクラスを使って生成されています。以下の表は、主な組み込み型とそのクラス名の対応関係を示しています。

対応するクラス名
整数int
浮動小数点数float
文字列str
真偽値bool
リストlist
タプルtuple
集合set
辞書dict

2.2. クラス呼び出しとリテラル表現の違い

 組み込み型のオブジェクトは、クラス呼び出しとリテラル表現のどちらでも生成することができます。例えば、辞書オブジェクトを生成する場合は以下のようになります。

【クラス呼び出しによる生成】

# 空の辞書を生成
empty_dict = dict()
# キーワード引数を用いて辞書を生成
person = dict(name="Alice", age=30)
person

実行結果

{'name': 'Alice', 'age': 30}

【リテラル表現による生成】

# 空の辞書を生成
empty_dict = {}
# キーと値を直接記述して辞書を生成
person = {"name": "Alice", "age": 30}
person

実行結果

{'name': 'Alice', 'age': 30}

 どちらの方法でも同じ内容の辞書が生成されますが、リテラル表現はコードを簡潔に記述できるため、頻繁に利用されます。

3.カスタムクラスを用いたオブジェクト生成の実例

3.1. カスタムクラスの定義とオブジェクト生成例

 ここでは、Bookクラスを例に、オブジェクト生成の流れを詳しく解説します。以下のコードは、書籍情報を扱うBookクラスの定義と、そのオブジェクト生成の実例です。

# Bookクラスの定義
class Book:
    def __init__(self, title, author):
        # オブジェクト生成時に書籍名と著者名を設定
        self.title = title
        self.author = author

    def display_info(self):
        # 書籍の情報を表示するメソッド
        print(f"書籍名: {self.title}")
        print(f"著者: {self.author}")

# Bookクラスからオブジェクトを生成し、変数に保存する
my_book = Book("Pythonプログラミング入門", "鈴木一郎")

# 生成されたオブジェクトのメソッドを呼び出して情報を表示
my_book.display_info()

実行結果

書籍名: Pythonプログラミング入門
著者: 鈴木一郎

 この例では、Bookクラスの__init__メソッドが、オブジェクト生成時に渡された引数 "Pythonプログラミング入門""鈴木一郎" を受け取り、titleauthor という属性に設定します。続いて、display_info メソッドを呼び出すことで、オブジェクトに格納された情報がコンソールに表示されます。

3.2. オブジェクト生成時の引数の役割と詳細な解説

 オブジェクト生成の際に指定する引数は、クラスの初期化処理においてそのオブジェクト固有の状態を決定するために使用されます。上記のBookクラスの場合、生成時に渡された書籍名と著者名は、オブジェクト内のデータ属性に格納され、後からオブジェクトのメソッドを通して利用することができます。これにより、同じクラスから生成された複数のオブジェクトが、それぞれ独自の情報を保持することが可能になります。

まとめ

 ここでは、Pythonにおけるオブジェクト生成の基本的な書式と、その実際の動作について詳しく解説しました。組み込み型のオブジェクト生成と、カスタムクラスを利用した具体例を通して、生成されたオブジェクトの保存や再利用の方法、さらには生成時に渡す引数の役割について理解を深めることができました。これらの知識を活用することで、柔軟かつ効率的なPythonプログラムの作成が可能となります。