Pythonをはじめてみる(4)

何がやりたいかというと、

\frac{a+b\sqrt{c}}{d}

の形の数を表すクラスを作りたい。
これを作るのに必要な要素を書いていく。
クラス名は「Gal」とする(Galoisの略)。

デフォルト引数

データメンバはa,b,c,dの4つとして、


Gal(1, 2, 3, 4)

で、(1+2√3)/4を表す。その他に、


Gal(1, 2, 3) # 1+2√3
Gal(1) # 1

としたい。
C++と同じようなデフォルト引数が使えて、


class Gal:
def __init__(self, a, b = 0, c = 0, d = 1):
self.a = a
self.b = b
self.c = c
self.d = d

とする。

可変個引数

Perlに似ている可変個引数も使える。


class Gal:
def __init__(self, a, *b):
self.a = a
if len(b) < 1:
self.b = 0
self.c = 0
else:
self.b = b[0]
self.c = b[1]
if len(b) < 3:
self.d = 1
else:
self.d = b[2]

2つ目以降の引数を、リスト、じゃなくてタプルのbで受ける。

リスト

ここでは、あまり紹介しない。


a = [1, 2, 3] # リスト
print a[0], a[1], a[2] # 要素にアクセス
print len(a) # 長さ

Perlのようにスライシングも使える。


self.b, self.c = b[0:2]

これは、


self.b = b[0]
self.c = b[1]

と同等。