コンテンツにスキップ

第9章 クラス

1 基本的なクラス

これまで利用してきたintやstr、dateなどは全てPythonで用意されていた型です。型はクラスとして定義されています。クラスを自分で作成し、型を増やすことが出来ます。

クラスを定義するには以下のようにします。

class Person:
    def __init__(self) :
        self.name = '鈴木'

class Personの後のブロックには init という名前の特殊な関数を定義します。これをコンストラクタといいます。 この関数内でクラス内で使用するデータを初期化します。

このPersonクラスを用意することでPerson型が利用できます。 Person型の変数を利用するには、以下のようにします。

p = Person()

クラス名() でクラスの実体=インスタンスが作成されます(※Javaと違いnew命令は必要ありません)。 このとき、Personクラスに定義されたコンストラクタ( init 関数)が自動的に実行されます。

ここでは self.name に「鈴木」を入れています。selfとは自分自身(インスタンス)を示します(Javaではthisで表されるものと同じ)。 つまり、Person型の内部にnameという変数が作成され、そこに「鈴木」と入れています。

nameを表示するには以下のようにします。

print( p.name )

2 コンストラクタの引数

コンストラクタ(__init__関数)には引数を付けることが出来ます。 既にselfという引数がありますが、これはクラス内の関数では必ず最初の引数として定義しなければなりません。第二引数として n を定義し、これをnameに入れるようにします。

class Person:
    def __init__(self, n) :
        self.name = n

このように定義した場合、Person型のインスタンスを作る際に、引数を必ず指定しなければなりません。

p = Person('鈴木')

3 メソッド

クラス内に定義する関数はメソッドといいます。 メソッドも必ず最初の引数にselfが必要です。 Personクラスにshowというメソッドを定義し、nameを表示してみます。

class Person:
    def __init__(self, n) :
        self.name = n

    def show(self):
        print(self.name)

これを使うには以下のようにします。

p = Person('鈴木')
p.show()

showにはself引数がありますが、呼び出すときには無視します。