今回の記事では、pythonの基礎となるクラスとメソッドについて説明致します。
「pythonを始めたけど、クラスやメソッドがよくわからない」
「オブジェクト指向って何?」
「クラスやメソッドの実際の書き方が見てみたい」
という型へ向けて、
【基礎】クラスとは
【基礎】メソッドとは
【応用】コンストラクタについて
【応用】インスタンスについて
【応用】メソッドの種類
【応用】継承について
【おまけ】メソッド一覧を取得する方法
を説明致します。
この記事を読んでいただければ、pythonにおけるクラスやメソッドの基礎がわかります。
ぜひ最後までお付き合いください。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
クラスとは
クラスとは、オブジェクトを生成するうえで使われる“型”のようなものです。
このクラス(型)からインスタンスを生成し、処理を行います。
クラスの作り方は、”class”キーワードの後に任意のクラス名を書き、
その下にメソッドや変数を書いていくことで作られます。
実際に記述すると、以下のようになります。
class className(): pass
上記は何の処理もしない空のクラスです。
もちろん何も処理が入っていないので、実行しても何も行われません。
この中にメソッド(関数)を入れることで、処理を行なっていきます。
メソッドとは
メソッドとは、ある処理のまとまりに名前をつけたものの事です。
メソッドは、クラスと同じ要領で”def”キーワードの後に任意のメソッド名を入れ、そこに引数を与えます。
引数とは処理をする上で必須となる、メソッドやクラスに引き渡す値の事です。
ここで、クラスの中で”Hello World!”を表示するメソッドを入れてみましょう。
class className(): def myprint(self): print("Hello World!")
上記のコードは「myprint」というメソッドを作成しています。
こちらのmyprintメソッドを呼び出すと
Hello World!
と表示されます。
もちろん処理の「まとまり」なので、複数行記述することで様々な処理をさせることが可能です。
コンストラクタについて
クラスとメソッドについて説明したところで、コンストラクタについても確認しましょう。
コンストラクタとは、インスタンスを生成した際にまず自動的に呼び出すメソッドの事です。
クラスの初期設定などを行うためのメソッドになります。
また、コンストラクタの引数はインスタンス生成時に必要となる値になります。
インスタンスについては、次の章で説明致します。
インスタンスとは
インスタンスとは、型となるクラスを元に生成した実体を言います。
よく「クラスは設計図、インスタンスは設計図から作られた物」と例えられています。
実際の処理では、インスタンスを生成する事によってそのクラス内の処理を実行できるようになります。
それでは、実際のコードを確認してみましょう。
class Calc: def __init__(self, a, b): self.a = a self.b = b def Sum(self): self.sum = self.a + self.b return self.sum ins = Calc(2, 3) print(ins.Sum())
実行結果:
5
ここでのポイントは以下になります。
1. Calcクラス内にコンストラクタ(__init__)とSumメソッドを記述する
2. Sumメソッドでは、”return self.Sum”で戻り値設定する
3. ins = Calc(2, 3)でコンストラクタに引数を渡し、インスタンスを生成する
4. ins.Sum()でCalcクラス内のSumメソッドを呼び出す
ここで戻り値という言葉が出てきましたね。
戻り値とは、メソッドを呼び出した結果として返す値を言います。
処理結果としてどの値を返すかを”return 値”と書く事で設定できます。
pythonではこのようにしてクラスを元にインスタンスを生成し、メソッドを呼び出しています。
このように、型と実体に分かれて処理を行っていく言語を「オブジェクト指向型言語」と言います。
オブジェクト指向はつまるところ、C言語のように手続きの手順を書いていくものではなく、クラスから作られたオブジェクトの操作としてプログラムを記述していきます。
継承について
クラスやメソッドについて一通り説明したところで、継承について知っておきましょう。
実際にプログラムを書いていると「既存のクラスとほとんど一緒だけど少しだけ変更を加えたクラスを作りたい」なんて時があると思います。
そんな時に継承を活用すると便利です。
継承は指定した既存のクラスから、メソッドを追加・削除したり一部だけを上書き(オーバーライド)して、新たなクラスを定義する事を言います。
継承を活用する事で、よりコンパクトなプログラムが書けるようになります。
継承の具体的な活用方法は、以下の記事を参照してください。
メソッド一覧を取得する方法
最後に、クラスの中に沢山メソッドを書きすぎてしまって、少々ややこしくなってしまった場合は以下を実行してみると便利です。
メソッド一覧の取得が可能です。
instance = Calc(2,2) for method in dir(instance): if callable(getattr(instance, str(method))): print(method)
Output:
Sum __class__ __delattr__ __dir__ __eq__ __format__ __ge__ __getattribute__ __gt__ __hash__ __init__ __init_subclass__ __le__ __lt__ __ne__ __new__ __reduce__ __reduce_ex__ __repr__ __setattr__ __sizeof__ __str__ __subclasshook__
まとめ
いかがでしたでしょうか?
今回の記事では、
【基礎】クラスとは
【基礎】メソッドとは
【応用】コンストラクタについて
【応用】インスタンスについて
【応用】継承について
【おまけ】メソッド一覧を取得する方法
について解説致しました。
クラスやメソッドはpythonをはじめとしたオブジェクト指向の基礎となる為、とても重要です。
ですので、この記事を読んで少しでもニュアンスを掴んでいただけたらと思います。
なお、
この記事ではPythonのクラスやメソッドについて紹介しましたが、これ以外にもPythonの基礎知識などが知りたい方は以下記事をどうぞ!
Pythonをはじめて学ぶ方のために、Pythonでできることや学習法を中心にご紹介していますので、きっと参考になるかと思います。
【Python入門 完全攻略ガイド】