pythonでのクラス
pythonでも他の言語同様クラスを作ることができます。
クラスの定義
pythonでクラスを定義するには、classという文字列に続けてクラス名を書きます。
1 2 |
class Hoge: pass |
passというのは、「このクラスでは何も処理を行わない」という意味です。
とてもシンプルですが、これでも立派なclassです。
アトリビュート
クラスを定義したら、次にインスタンスを作ります。
1 |
ins=Hoge() |
これでインスタンスができました。
面白いのが、pythonだとインスタンスを作る際にnewしなくてよいことです。
phpやrubyなどメジャーなオブジェクト指向言語はnewする言語が多いですが、pythonは独特ですね。
インスタンスを作ったら、次にアトリビュートを使いましょう。
アトリビュートはインスタンスにデータをもたせることができます。
アトリビュートを使うためには、「インスタンス名+ . +アトリビュート名」で記述します。
1 2 |
ins.value=10 ins.value #valueの値を表示 |
アトリビュートへの代入は自由に行うことができるので、いろいろな値を試してみましょう。
ちなみに、アトリビュートは各インスタンスに個別に作られるため、お互いのクラスには干渉し合うことはありません。
それぞれのインスタンスに個別の情報をもたせることで、各インスタンスに個体差を作ることができます。
メソッドの定義
メソッドをつくるときは、defに続けてメソッド名を書きます。
また、第一引数に必ずself を渡します。
selfはJavaScriptのthisみたいなものだと思ってください。
(実はselfと書かずにthisと書いてもプログラムは動くのですが、pythonの慣習上selfと書くことになっています。)
1 2 3 4 |
class Hoge: def hogehoge(self): self.value="hoggeeeeeeee!" return self.value |
作ったメソッドを呼び出すときは、インスタンス化した後で以下のように記述します。
1 |
ins.hogehoge() |
カッコをつけ忘れるとエラーが出るので、絶対に忘れないようにしましょう。
初期化メソッド
インスタンスにいちいちアトリビュートを追加していくのは面倒なので、__init__()というメソッドで先に初期化しておくことができます。
イメージとしては、javaのコンストラクタやrubyのinitializeと一緒です。
1 2 3 4 5 6 7 8 |
class Hoge: def __init__(self): self.value = 200 print("初期化メソッド") ins=Hoge() # "初期化メソッド” ins.value # 200 |
他にもアトリビュートの隠蔽やデストラクタなど、面白いトピックがpythonには数多く存在するのですが、それについてはまた別枠で書きます。