Pythonをはじめてみる(3)

クラス

2次元のベクトルクラスを作ってみる。


class Vec:
def __init__(self, x, y):
self.x = x
self.y = y

def write(self):
print "%d %d" % (self.x, self.y)

def __add__(self, a):
b = Vec(self.x + a.x, self.y + a.y)
return b

v = Vec(1, 2)
v.write() # 1 2
v1 = Vec(2, 3)
v2 = v + v1
v2.write() # 3 5

まず、クラスの定義は使う前に無いといけないらしい。関数も同じ。
クラス自体は少しJavaScriptに似た感じ。thisがselfになって、self.xとするとメンバ(データメンバ)になる。ただし、参照するにはメソッドの引数に頭にselfがいるっぽい。
defでメソッドを定義する。そのメソッドの名前を__init__にすると、コンストラクタになるらしい。
writeメソッドは、はじめprintとしたが、予約語ということで怒られた。
演算子オーバーロードは、決められた名前のメソッドを定義することで可能になり、__add__だと+になる。


あと、クラスと関係ないが、書式付き出力は、こんな感じ。


print "%d %d" % (self.x, self.y)

これくらい分かればあとは調べながら組んでいけるかな?