【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のクラスの使い方を解説してきました。 関連した処理をクラスにまとめることにより、コードの再利用がしやすくなり、コードの一貫性や統一性、拡張性がかなり高くなります。 オブジェクト指向プログラミングにおいてクラスの概念はとても重要なポイントになるため、最初は難しいかもしれませんがしっかりとクラスを使いこなしていきましょう。

【Python】クラスの書き方と使い方の基本 | いっしー@Webエンジニア