クラスはオブジェクトの設計図であり、オブジェクトはクラスのインスタンスです。クラスはデータとそれに関連する動作をひとまとめにして管理するための仕組みを提供します。Pythonでは class キーワードを使ってクラスを定義します。この章では、クラスとオブジェクトの基本的な使い方について学びます。
クラスを定義するためには、class キーワードを使用します。クラスの属性とメソッドを定義することで、そのクラスのオブジェクトが持つデータと動作を決定します。
=
=
この例では、Dog クラスを定義し、name と age という属性、および bark というメソッドを持たせています。
クラスを定義した後、そのクラスのインスタンス(オブジェクト)を作成することができます。オブジェクトを作成するには、クラス名を関数のように呼び出します。
# オブジェクトの作成
=
# オブジェクトの属性へのアクセス
# 出力: Pochi
# 出力: 3
# オブジェクトのメソッドの呼び出し
# 出力: ワンワン
この例では、Dog クラスのインスタンス my_dog を作成し、その属性にアクセスし、メソッドを呼び出しています。
コンストラクタは、オブジェクトが作成されるときに自動的に呼び出される特別なメソッドです。Pythonでは、__init__ メソッドとして定義します。コンストラクタを使うことで、オブジェクトの初期化処理を行います。
=
=
=
# 出力: Pochi が作成されました
この例では、__init__ メソッドを使ってオブジェクトの初期化処理を行っています。
インスタンスメソッドは、オブジェクトごとに動作するメソッドです。インスタンスメソッドの第1引数には、通常 self を指定します。これにより、メソッド内でそのオブジェクト自身にアクセスできます。
=
=
=
# 出力: Pochi がワンワンと吠えています
この例では、bark メソッドが self を使ってオブジェクトの name 属性にアクセスしています。
クラス属性は、クラス全体で共有される属性です。インスタンス属性は、各オブジェクトごとに個別に保持される属性です。
= # クラス属性
= # インスタンス属性
= # インスタンス属性
# クラス属性へのアクセス
# 出力: Canis familiaris
# インスタンスの作成
=
# 出力: Pochi
# 出力: 3
# 出力: Canis familiaris
この例では、species はクラス属性であり、name と age はインスタンス属性です。
クラスメソッドとスタティックメソッドは、インスタンスではなくクラス自体に関連付けられたメソッドです。クラスメソッドは、クラス全体に作用し、スタティックメソッドは独立した処理を行います。
= # クラス属性
=
=
return
return
# クラスメソッドの呼び出し
# 出力: Canis familiaris
# スタティックメソッドの呼び出し
# 出力: ワンワン
この例では、get_species はクラスメソッド、bark_sound はスタティックメソッドとして定義されています。
クラスは他のクラスを継承することができます。これにより、既存のクラスの機能を再利用し、拡張することができます。
=
=
# 出力: Pochi は食事中です
# 出力: ワンワン
この例では、Dog クラスが Animal クラスを継承しており、eat メソッドを使用できるようになっています。
この章では、Pythonのクラスとオブジェクトについて学びました。クラスを使うことで、データとそれに関連する動作をひとまとめにして管理することができ、オブジェクト指向プログラミングの基礎を理解することができます。次の章では、継承とポリモーフィズムについて詳しく学び、クラスの再利用性と柔軟性をさらに高める方法を学びます。