メソッド
クラスの作り方 その2
先ほど学んだクラスの作り方とは違う形でクラスを設計したいと思います
ここからは例の図にしたがって設計してみてください
下の図はdef文を使ったものを図だけで表してみました
中に何が入るかわ原子クラスをみて参考にしてください
それでは実際に例を見て原子クラスをpythonで設計してみてください


メソッドについて
メソッドとはオブジェクトに対する対処を実行するためのものです。
つまりクラス内の部品に名前や役割をあてます。
原子のクラス(Atomic)のインスタンスオブジェクトを作ると、メソッドを呼び出すことができます。
メソッドを定義するには、先ほどのクラスの作り方 その2のようにdef文を使います。
引数の定義方法などは、関数の定義方法と似ていますが以下のような点が違います。
メソッドの名前を作る際には、関数名をつけるときと同様に英小文字を組み合わせてつくりましょう。
(できるだけ最初の文字は大文字で)

メソッドの定義
メソッドを定義する際には以下の内容を忘れないでください。
- メソッドを定義する時はdef文を使いましょう。
- クラス内にメソッドを定義しましょう。
- メソッドの丸カッコ内には必ずselfを入れましょう。

メソッドの使い方
メソッドを使う際には例のようにして
オブジェクト.ドット名で使えます。
例では実際にa.H()で返しています。


引数selfについて
selfとは、メソッドの中でインスタンスオブジェクト自体を利用したい時に使います。
ここからは必ずselfを第一引数に添えましょう。
そうする事でインスタンスを呼び出す時に第1引数を指定する必要がなくなります。
なぜなら第1引数はメソッドを呼ぶ出すときにpythonが自動的に渡してくれるからです。

複数のメソッドを使うには
複数のメソッドを作るには基本と同じでdef文で登録します。
例では原子の名前をつくるメソッドと表示するメソッドを作りました。

メソッドを使う際にはこれも基本と同じで
オブジェクト.メソッド名で使います。


特殊メソッドについて
メソッドの中にはpythonではじめから登録されているメソッドあります。
それを特殊メソッドと呼びます。
作ったクラスに特殊メソッドを定義すると、インスタンスオブジェクトに対して演算子などを使った操作を行えるようになります。
つまり特殊メソッドを使う事でメソッドにpythonで決められた動きをしてくれます。
特殊メソッドはアンダースコア(_)が二ついているものがそれにあたります。
例として__init__を使ってみます。
__init__のようにアンダースコアが二つ着けられているものは特殊メソッドだと思ってください。
__init__はクラスで扱いたいアトリビュート(これは次の章で)は,初期化を行うときに使います。
特殊メソッドの種類に関してはpythonのチュートリアルを見てください。
アドレスはhttp://www.python.jpです。

メソッドを使う際の注意点
メソッド名をつける際には下の事を気をつけてつけましょう。

メソッドに関する問題
すべて正解できたら次のアトリビュートの章へ進みましょう。
問題1 次の中でメソッドはどれでしょう?空欄に書いてください。
class  | Atomic(): |
... |    def H(self): |
... |      print "水素" |
問題2 次のAtomicクラス内にはいくつ引数があるでしょう?空欄に書いてください。
class  | Atomic(): |
... |    def H(self,H_name): |
... |      self.H_NAME = H_name |
... |    def display(self): |
... |      return self.H_NAME |
問題3 次のクラス内にはいくつメソッドがあるでしょう?
class  | PC(): |
... | def PC_diplay(self): |
... |      print "モニター" |
... | def PC_desktop(self): |
... |      print "デスクトップ" |
... | def PC_mouse (self): |
... |      print "マウス" |
... | def PC_keyboard (self): |
... |      print "キーボード" |