こんにちは、うしまるです。
今日もPythonの勉強を一緒にしていきましょう!
今日のテーマは「Pythonのクラスを作る!」です。
Pythonで大規模なソフトを作ったり、仕事としてPythonを扱うときには必須の機能となりますのでぜひ、マスターしてみてください!
クラスとは?
クラスとは、オブジェクト指向プログラミングを行う上で大事な要素の1つです。クラスそれぞれに違う性質の役割をもたせ、それぞれを密接な関連性で紐付けることでプログラム全体を構築していくことでソフトウェア開発を実践していくことになります。
Pythonでは、クラスはクラスオブジェクトを用いて定義していきます。
Pythonでクラス(class)をつくるまで!
クラスの基本
まずはクラスの基本についてみていきましょう。
手順1:クラスの定義を行う
まず最初にクラスを定義します。クラスを定義するときの基本形を見ていきましょう!
class クラス名:
[スイート]
予約語(class)を先頭に半角スペースを空けてクラス名をつけ、最後に”:”をつけます。この部分をクラスのヘッダと呼びます。
- クラス名の先頭は必ず大文字の英語ではじめること
- 定義したクラス内の処理は1タブ分右にインデントすること
では、詳しく解説していきます。
クラス名の先頭は必ず大文字の英語!
クラス名をつけるときは、そのクラスの役割が推測しやすいような名前をつけてあげる必要があります。実際の開発現場では、クラスの名前の付け方が決められていたりもしますので、開発現場毎にまずはそういったルールが無いかどうか確認しましょう。
また、クラスの名前は、キャメルケースで記述することが慣例となっています。要するに先頭の頭文字は英語の大文字にしましょうというものです。
クラス内の処理は1タブ分右にインデント!
定義したクラスの書き方は、1タブ分右にインデントして記述していきます。C言語系の{}は、Pythonではタブのインデントで表現されます。
手順2:クラス内に関数を作成する
手順1でクラスを作成したら次はクラス内に関数を追加していきましょう。
まずは関数内で表現できるものは3つあります。
- コンストラクタ
- デストラクタ
- メソッド
コンストラクタについて
コンストラクタは、特別な関数です。
クラスのオブジェクト生成時に、一番最初に呼び出される関数で、クラス内のデータ初期化に利用されることが多いです。
def __int__():
処理
intの前後の”_”は2つ重ねるのがコツです。1つだけだとエラーになってしまうので気をつけましょう!
デストラクタについて
デストラクタも特別な関数です。
コンストラクタと逆で、生成したクラスオブジェクトが不要になり削除する時に自動で実行される関数となります。
def __del__():
処理
ただし、デストラクタは、コンストラクタ程使用頻度は少ないかもしれません。他の言語でもそうなのですが、ここ数年で出てきている言語は、あまりオブジェクトの生存期間について気にしなくても良いようになっています。C++などはむしろ意図的にデストラクタや関数最後での初期化作業が必須ですが。。。
こういった機能をガベージコレクションと呼びます。また機会がありましたらこちらの語句についても深く取り扱う記事を作成したいと思います。
メソッド
クラスを作った時に一番多く作成するのが、メソッド(関数)になります。
def 関数名():
処理
関数の詳しい作り方については下の記事でも紹介していますので合わせて確認してみてください。
手順3:作成クラスのインスタンス作成
クラスを使用する場合は、”インスタンス”を作成する必要があります。1つのクラスは何個でもインスタンスを作成することができ、それぞれのインスタンスは独立して使用することができます。
インスタンス変数 = クラス名()
インスタンス変数を左辺に設定し、右辺にクラス名()をつけます。この式を追加することで、以降インスタンス変数を使用して関数を呼び出すことができます。
手順4:メソッドの呼び出し箇所作成
インスタンスを作成すると、作成したインスタンスのクラス内で定義したメソッドが使えるようになります。メソッドの呼び出し方をみていきましょう!
インスタンス変数.クラスで作成したメソッド名()
インスタンス変数とメソッド名の間は”.”をつけます。メソッド名のあとの”()”部分には、引数を定義したメソッドの場合は、引数を設定してあげましょう。
Pythonでクラス(class)を動かしてみよう!
ここまでは、クラスの作成から呼び出すところまでの基本形を見てきました。では、さっそくVSCodeを使って動かしてみましょう!
今回はクラスTestClassを作成しました。
コンストラクタ→メソッド→デストラクタの順番で読み出しを行っています。selfはインスタンス自身になります。このselfに対して変数を設定するとクラス変数として扱うことができます。
今回はデストラクタを呼び出すためにdelを使用していますが、Pythonはガベージコレクションが効くので処理が終わったあとにプログラム側が勝手にインスタンスを削除します。
そのため、実際のところはよほど特別な理由がない限りデストラクタは使うことが無いかもしれません。
まとめ
今回は、Pythonでクラス(class)の作り方を解説しました。クラスの基本をかんたんにまとめます。
- クラスは先頭がアルファベットの大文字を使うこと!
- クラスの中身を記述するときはインデントすること!
- __int__でクラスの初期化(コンストラクタ)ができる
- 実際に使うときはインスタンスを作成しよう!
いかがでしたでしょうか!
それでは今回はここまで。ではではノシ
2:クラス内に関数を作成する
3:作成クラスのインスタンスの作成する
4:メソッドの呼び出し箇所を作成する