メソッドを定義する
メソッドとは、オブジェクトに対する何かしらの操作、または、オブジェクト自身が備えている固有の機能と捉えられます。
メソッドの定義は通常の関数と同じようにdef文を使って定義しますが、class文の下にあり、第1引数に必ずself
を指定する、という点が関数の定義と異なります。このself
はインスタンス自身を表す引数ですが、まだどういうことか理解する必要はありません。今はメソッド定義の決まりごととして覚えておきましょう。
class クラス名:
def メソッド名(self, 引数2, 引数3,…):
処理内容
また、インスタンスを指定してメソッドを実行するには以下の書式で記述します。メソッドを呼び出すときは第1引数self
は不要です。引数に入れる値は、self
を飛ばして2つ目以降の引数に割り当てられます。
インスタンス名.メソッド名(引数2, 引数3,…)
ここでは例として簡単なメソッドを定義しましょう。
class Sample:
# メソッドを定義する
def sum_method(self, a, b):
print(a + b)
# インスタンスを生成する
s1 = Sample()
# インスタンスを指定してメソッドを呼び出す
s1.sum_method(2, 3)
self
の部分を除けば、通常の関数の定義と変わりないことがわかります。実際に、クラスとインスタンスを作成せずに、メソッドではなく関数で記述すると以下のようになります。
# 関数を定義する
def sum_func(a, b):
print(a + b)
# 定義した関数を実行する
sum_func(2, 3)
このように、書式はメソッドも関数もほとんど違いがありません。では、なぜメソッドと関数を使い分けるのか?メソッドの利点は何か?
一般的に、小規模なプログラムでは関数、大規模なプログラムではメソッド(クラス)を使用するほうが良い、とされています。現時点でその違いを理解するのは難しいかもしれませんが、今後この違いを意識しながら学習していくことで、オブジェクト指向への理解がさらに深まるでしょう。
初学者のためのPython講座 オブジェクト指向編1 オブジェクト指向とは
初学者のためのPython講座 オブジェクト指向編2 クラスとインスタンス
初学者のためのPython講座 オブジェクト指向編3 メソッド
初学者のためのPython講座 オブジェクト指向編4 初期化メソッド
随時追加予定