こんにちは。
今回は Python の命令系統の一つである メソッド について学習していきます。
python の命令には 関数 と メソッド の2種類があります。
メソッドの学習には以下の記事の内容を理解していると、より理解が深まります。
四則演算、数値列、文字列についてまとめた記事については、以下の記事を参照ください。
【Python】数値と文字列について【初心者向け】
続きを見る
変数・論理値・演算子については以下の記事をご参照ください。
【Python】変数・論理値・演算子について【初心者向け】
続きを見る
関数の基本については以下の記事をご参照ください。
【Python】関数の基本について【初心者向け】
続きを見る
このメソッドを学習するためには、オブジェクト という概念も理解する必要があるので、今回はオブジェクト → メソッド という順番で学習していきます。
本記事の内容
- オブジェクトを理解する
- メソッドを理解する
- 関数とメソッドの違いを理解する
では、早速見ていきましょう。
【Python】オブジェクトとメソッドの理解に有用な無料動画
七海有里佳のゆる★Python!|オブジェクトとメソッドの回
Youtubeに落ちている無料の動画より、オブジェクトとメソッドの違いについての動画を持ってきました。
「女子高生」という設定のVR系youtuberが解説していますが、「超初心者向け」の方にはアリかもです。
Python習得という目的の為には手段を問わない方針でいこうと思います(笑)
Telsko|Types of methods
英語に抵抗のない方はこちらの視聴もオススメです。
但し、内容として「オブジェクト指向」→「メソッド」の解説になっているので、「オブジェクト指向型プログラミング」にピンとこない方は、現時点ではそれほど無理をしなくても良いかなと思います。
とはいえ、やはり英語の無料動画には質が高いものが多いです。
今後も有用である英語教材はどんどん紹介していきますので、英語が苦手な方もなるべく慣れていく様にしましょう。
オブジェクトとは
オブジェクトの具体例
動画を視聴したところで、実際に深掘りして学習していきましょう。
Python では数値列も文字列もデータに属します。これらデータのことを全て “オブジェクト” と言います。
ではオブジェクト = object
は日本語訳でどの様な意味を持つのでしょうか。
'object' は(知覚できる)物、物体、対象、目的、目標、おかしなもの、目的語、客観、客体 という意味を持つ。
>> object とは【weblio】
pythonのコードの羅列を直視すると、object =データ は物体として見る事が出来ません。
プログラミングを行う上では、object = データの実体を見ることができませんが、「データには実体がある」と考えてください。
たとえとして、object を「ヒト」として考えて理解を深めましょう。
オブジェクトの変数 = 属性変数(プロパティ)
ヒトは、身長、体重、年齢、性別、名前という様に各々に" 属性情報 "を持っています。Pythonのオブジェクトも、ヒトと同じ様に属性情報を持っています。
オブジェクトの属性情報のことを プロパティ(property) と言います。例えば、この記事の筆者の私というオブジェクトのプロパティの一つに、名前の’とみー’があります。
オブジェクトの関数 = 振る舞い(メソッド)
'ヒト' = オブジェクトは以下の様な「行動」をします。
- 思いっきり100m走る
- 自身で考えた内容を文章化する
- 時間をかけて学ぶ
- 食事をとる
この様なオブジェクトの 行動 = 振る舞い のことをメソッド(method
)と言います。
pythonのobjectにも同様にmethodがあります。
オブジェクトにはプロパティ(属性)がありメソッド(振る舞い)がある。
と理解してください。
pythonにおける関数とメソッドの違い
ここで、Pythonにおける「関数」と「メソッド」の違いについて学習していきましょう。
print()
や input()
などの「関数」は、print(引数)
や input(引数)
と記述されます。
その一方でメソッドは、データ.メソッド名(引数)
と表現することができます。関数もメソッドも「引数を持つ」点は共通しています。
しかし、メソッドには「ドット ( .
)」が付きます。メソッドはオブジェクトが持っているもので、'オブジェクトありき' です。
そのため「データ」が持っている「メソッド」を実行する、という意味の書き方としてデータ.メソッド(引数)
という表現をします。
早速、オブジェクトのデータが持っているメソッドを Python を使用して実行してみましょう。
文字列のメソッド(振る舞い)
Pythonに入力されているデータである数値列や文字列であるオブジェクトは、プロパティとメソッドを持っています。
メソッドは種類が非常に豊富ですので、以下にリンクを貼っておきますので、ご参照ください。
数式に関する全てのメソッドはこちらに記載されています。
>> Python 標準ライブラリ【数値型】
数値に比べて、文字列のメソッドは比較的扱いやすいものが揃っているので、下記のドキュメントから数種類ほどピックアップして紹介します。
>> Python 標準ライブラリ【文字列型】
七海有里佳のゆる★Python!|メソッド応用の回
先程紹介した動画の続きにメソッドのタイプをいくつか紹介している回がありましたので、載せておきます。
また、色々なタイプのメソッドを紹介している英語の動画は、先程紹介した英語教材でも紹介されています。
文字列の大文字↔︎小文字の変換 lower()
とupper()
半角英字の文字列の変換についてのメソッドをおさえておきましょう。
lower()
大文字を小文字にするメソッドupper()
小文字を大文字にするメソッド
実際にコードで確認してみましょう。
データ.メソッド(引数)
という表現の仕方を思い出しましょう。
1 2 3 4 5 6 7 8 9 | >>> x = "Sanfujinkai no Techou" >>> x = x.lower() >>> print(x) sanfujinkai no techou >>> x = "mamaco" >>> x = x.upper() >>> print(x) MAMACO |
半角英字の文字列を小文字と大文字に変換することはできましたでしょうか。
文字列がどこにあるのか探す find()
と count()
文字列の中に特定の文字列が入っているかを検索するには find()
メソッドを使います。方法は、検索したい文字列を引数に指定します。
繰り返しですが、メソッドはデータ.メソッド(引数)
という表現をします。
1 2 3 4 5 6 7 8 9 | >>> x = "Sanfujinkai no techou" >>> x.find("a") 1 >>> x.find("n") 2 >>> x.find("t") 15 >>> x.find("b") -1 |
注意点としては "a
" , "b
" ,"c
" という様に、ダブルクォーテーションで囲むのを忘れない様にして下さい。
また、文字列の何番目にあるのか、ということですが、最初は"0"番目として数えます。
なお、文字が入っていない場合には "-1
" という戻り値 = 結果になります。
また文字数をカウントしたい場合には、count()
というメソッドを使用します。
1 2 3 4 5 6 7 | >>> x = "Sanfujinkai no Techou" >>> x.count("c") 1 >>> x.count("a") 2 >>> x.count("p") 0 |
何も文字が入っていない場合には戻り値が 0 になります(x.count("p")
)の場合です。
文字列を置換する replace()
文字列を置き換えたい場合は replace()
メソッドを使います。検索文字列と置換後の文字列の2つの引数があります。
検索文字列,置換後の文字列
という様な感じです。
これは非破壊的メソッドですので、最後に変数を指定して上書きする必要があります。
1 2 3 4 | >>> b = " 今日の当直は お産が 全くなかった。" >>> b = b.replace("全くなかった。", "めちゃめちゃあった。") >>> print(b) 今日の当直は お産が めちゃめちゃあった。 |
文字列のトリミングする strip()
空白のスペースや改行を取り除く処置をトリムと呼びます。
トリムを行うメソッドとして strip()
メソッドがあります。
1 2 3 4 | >>> c = " maido!!!" >>> c = c.strip() >>> print(c) maido!!! |
この場合、strip()
という様に引数は不要です。
文字列の中に変数を埋めこむ
文字列の中に変数を埋め込む方法として、次の方法もあります。
文字列中に {}
を入れておき、 format()
を使うことで、{}
を変数に置き換えることが可能です。
1 2 3 4 | >>> obgyn = "産婦人科には{}と{}と{}がある。" >>> obgyn = obgyn.format("産科","婦人科","生殖") >>> print(obgyn) 産婦人科には産科と婦人科と生殖がある。 |
format を使用しなくても、文字列のクォーテーションの前に f
をつけても同様のメソッドになります。
1 2 3 4 5 6 | >>> kinmu1 = "月曜日" >>> kinmu2 = "木曜日" >>> days = 4 >>> touchoku =f"{kinmu1}から{kinmu2}まで{days}日間の当直です。" >>> print(touchoku) 月曜日から木曜日まで4日間の当直です。 |
以上の様な文章を作成することも可能です。
まとめ
如何でしたでしょうか。今回は関数に引き続き、オブジェクトとメソッドについて学習しました。
オブジェクトの説明、メソッドの説明、関数とメソッドの説明、また具体的な文字列メソッドについて説明する事ができれば、今回の学習目標は到達しています。
今回はこれで終了とします。