関数・クラス(2)
クラスとインスタンス
クラス、インスタンスは一般的なオブジェクト指向言語と同じ考え方(クラスは設計図であり、
インスタンスはそれを元に生成された個々の製品である、のような)で取り扱うことが出来る。
クラス定義
Python でクラスを定義するときの構文は以下の通り。
class クラス名(基本クラス):
定義
基本クラスは省略可能だが、特別に指定したいクラスが無い場合には
クラス object を指定することが推奨されている。
「定義」の部分ではメソッドやクラスのアトリビュートを定義する。
メソッド
クラスのメソッドは C++ のクラスのメンバ関数に相当する。クラスのメソッドの定義は
通常の関数とほぼ同じだが、引数リストの先頭に特殊な引数 self を追加する必要がある。
self は C++ の this ポインタのようなもので、クラスメソッドに暗黙に渡され、
インスタンスごとのアトリビュートを保持する。
class Foo(object): def __init__(self, x): self.x = x def echo(self): print self.x f = Foo(0) # Foo.__init__ が呼び出される f.echo()
0
上記のように、実際にクラスのメソッドを呼び出す場合には self を渡す必要はない。
上記のコードのクラス Foo のクラスメソッド __init__ は C++ のコンストラクタのように
インスタンスが生成されるときに呼び出される。
*1:実際にはオブジェクトの参照