【Python】クラスの書き方と使い方の基本
開発環境
- Python version: python 3.10.11
Pythonのクラスとは
Pythonのクラスとは、オブジェクト指向プログラミング(OOP)の基本的な概念の一部です。 クラスはデータとメソッドを組み合わせて、特定のデータ型やオブジェクトの定義する設計図のようなものであり、それを基にして実際のオブジェクト(クラスのインスタンス)を作成することができます。 公式リファレンス:https://docs.python.org/ja/3/tutorial/classes.html
Pythonのクラス(class)の書き方
Pythonのクラス(class)の書き方をご紹介します。
1# クラスの定義 2class クラス名: 3 def インスタンスメソッド名(self, 引数1, 引数2, ...): 4 # 処理の内容 5 6# インスタンスの生成 7インスタンス変数名 = クラス名() 8 9# インスタンスメソッドの実行 10インスタンス変数名.インスタンスメソッド名()
Pythonのクラスはclass
キーワードを使用して定義し、インデントされたコードブロック内に実行した処理を記述します。
クラスからオブジェクトを作成するためには「クラス名()」と記述することによりインスタンスを生成することができます。
また、生成したインスタンスに対してドット(.)の後にインスタンスメソッド名を記述することでインスタンスメソッドを実行することができます。
Pythonのクラスの命名規則
Pythonのクラスの命名規則にはいくつかルールがあります。
- 英文字の大文字で始める
- 2単語以上の場合はキャメルケース(各単語の先頭を大文字にして区別する)にする
英文字の小文字や2単語以上の場はスネークケース(各単語をアンダースコアで連結する)にすることもできますが、クラス名はクラスを識別するために英文字の大文字でキャメルケースで記述されることが一般的です。
Pythonのselfパラメータ
self
は、Pythonのクラス内で定義されるメソッドにおいて、そのメソッドが呼び出されたインスタンス自体を指す特殊なパラメータです。
self
の名前は慣習的なものであり、Pythonにおいては必ずしも self
である必要はありませんが、通常はこの名前を使用します。
クラス内のメソッドが呼び出されると、self
はそのメソッドが所属しているインスタンスにバインドされ、メソッドはそのインスタンスのデータにアクセスできるようになります。
Pythonのクラスの使い方
Pythonのクラスのよくあるパターンをサンプルコードを用いて使い方の解説をしていきます。
クラス内にインスタンスメソッドを定義する
1class Person: 2 def info(self, name, age, gender): 3 return f"{name}さんは{age}歳の{gender}です。" 4 5person = Person() 6print(person.info("山田", 30, "男性"))
このコードではPerson
クラスを定義し、クラス内にinfo
メソッドがインスタンスメソッドとして定義しています。
クラスのインスタンスを介してインスタンスメソッドを直接呼び出しています。
クラス内にコンストラクタを定義する
1class Person: 2 def __init__(self, name, age, gender): 3 self.name = name 4 self.age = age 5 self.gender = gender 6 7 def info(self): 8 return f"{self.name}さんは{self.age}歳の{self.gender}です。" 9 10person = Person("山田", 30, "男性") 11print(person.info())
このコードではPerson
クラスに__init__
でコンストラクタを定義しています。
クラスのインスタンス生成時に必要なデータが初期化され、後でinfo
メソッドを通じてクラス内の変数にアクセスすることができます。
クラスを継承してサブクラスを定義する
1class User(Person): 2 pass 3 4user = User("山田", 30, "男性") 5print(user.info())
このコードではUser
クラスがPerson
クラスを継承しています。
そのため、User
クラス自体は何も定義していませんが、Person
クラスの機能を引き継いでいるため、User
クラスのインスタンスでもinfo
メソッドを利用できます。
サブクラスでメソッドをオーバーライドする
1class User(Person): 2 def info(self): 3 return f"ユーザーの{self.name}さんは{self.age}歳の{self.gender}です。" 4 5user = User("山田", 30, "男性") 6print(user.info())
このコードではUser
クラスがPerson
クラスを継承し、info
メソッドをオーバーライドしています。
これにより、User
クラスは親クラスの同名メソッドを上書きし、独自のinfo
メソッドを定義することができます。
おわりに
Pythonのクラスの使い方を解説してきました。 関連した処理をクラスにまとめることにより、コードの再利用がしやすくなり、コードの一貫性や統一性、拡張性がかなり高くなります。 オブジェクト指向プログラミングにおいてクラスの概念はとても重要なポイントになるため、最初は難しいかもしれませんがしっかりとクラスを使いこなしていきましょう。