メソッドを使ってみよう

メソッドとは

これまでの講義で組み込みの関数を使用したり自分で関数を作ったりしました。今回はメソッドについて解説します。メソッドとは変数が持っている機能の一種で、関数のように呼び出して使用することができます。大抵の変数の型はいくつかメソッドが用意されています。

メソッドは以下の構文で呼び出しができます。変数とメソッド名をドットで繋いで呼び出しますが、ほとんど関数と同じですね。

メソッドの呼び出し
変数.メソッド名(引数)

また、メソッドから戻り値を得ることができる場合があります。戻り値がある場合は以下のように変数に格納することができます。

戻り値のあるメソッドの呼び出し
戻り値を格納する変数 = 変数.メソッド名(引数)

また、関数とは異なり、メソッドを実行すると変数の状態が変化する場合もあります。後で具体例を用いて説明します。

文章だけだとなかなかイメージしづらい部分が多いため、さっそく実際に使ってみましょう。

メソッドの例

メソッドの例 その1 replace

文字列型の変数には様々なメソッドが用意されています。よく使用されるものとしてreplaceメソッドが挙げられます。replaceメソッドは、文字列型の変数の指定した部分文字列を置換した文字列を返します。

文字列置換
文字列型変数.replace("置換される文字列", "置換後の文字列")

例えば、以下のコードでは文字列"aaa bbb abc"のaaaの部分をXXXに置換した値を変数text2に格納しています。

text1 = "aaa bbb abc"
text2 = text1.replace("aaa", "XXX")
print(text2) # XXX bbb abc

メソッドの例 その2 append

list型の変数はappendメソッドを使用して要素を追加することができます。appendメソッドは戻り値がない代わりに、元のlist型変数の状態が変わります。

リストの要素の追加
list型変数.append(追加する要素)

例えば、以下のコードでは1, 2, 3が格納されたリストに4を追加しています。

l = [1, 2, 3]
l.append(4)
print(l) # [1, 2, 3, 4]

最初、要素が[1, 2, 3]だったリストlがappendメソッドを実行すると[1, 2, 3, 4]というように要素が追加されていることが確認できます。このようにものとデータが変わったことを上で「状態が変わる」と表現しました。このようなメソッドは「破壊的に作用する」と呼びます。

補足 オブジェクト

補足としてオブジェクトについて説明します。非常に重要な概念なのですが、説明すると長くなるため、正確性を犠牲にして簡潔に概念的なものを説明します。

プログラミングには「オブジェクト」と呼ばれる用語があります。数値のような基本的なデータではなく「いくつかの値とメソッドが纏まったモノ」をオブジェクトと呼称することが多いです。ですが、Pythonの場合はすべての変数はオブジェクトをして扱われます(実際、Pythonの大抵の変数の型には上で説明したようにメソッドが用意されています。)。

例えばリスト型変数をリスト型オブジェクトと呼ぶ場合もあります。ただし、特に基本的な変数以外で「いくつかの値とメソッドが纏まった」変数をオブジェクトと慣例的に呼ぶ場合があります。今後の説明で「XXXオブジェクト」と出てきた場合は少し特殊な変数の型なのだ、と考えていただいて差し支えありません。

演習

演習問題1

上で解説した文字列のreplaceメソッドを使用して、文字列"XYY XYY XYZ"のXをWに置換してみてください。

解答例

text1 = "XYY XYY XYZ"
text2 = text1.replace("X", "W")
print(text2)    # WYY WYY WYZ

演習問題2

文字列型の変数には、全てを小文字に変換した文字列を返すlowerメソッドがあります。引数はありません。このlowerメソッドを使用して、適当な英数字の文字列を全て小文字に変換してみてください。

文字列置換
文字列型変数.lower()

解答例

text1 = "Abc Defg Higj Lmn"
text2 = text1.lower()
print(text2)     # abc defg higj lmn