Pythonをはじめてみる(5)

print

こんなようなことをしたい。


a = Gal(3, 2, 3, 2)
print a

これは、__str__という名前のメソッドを定義すればよい。

http://www.python.jp/doc/release/ref/customization.html


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

def __str__(self):
if self.d == 1:
return self.str_core()
else:
return "(" + self.str_core() + ")/" + str(self.d)

def str_core(self):
if self.a == 0 and self.b == 0:
result = "0",
else:
result = ""
if self.a != 0:
result = str(self.a)
if self.a > 0 and self.b > 0:
result += "+"
if self.b == 1:
result += "√" + str(self.c)
elif self.b == -1:
result += "-√" + str(self.c)
elif self.b != 0:
result += str(self.b) + "√" + str(self.c)
return result;

__str__が定義されていると、組込み関数strも使える。


a = Gal(3, 2, 3, 2)
b = Gal(3, 1, 5)
print "[" + str(a) + ", " + str(b) + "]"

日本語

Shift-JISを使うには、最初のほうで、


# coding: s_jis

としておけばよいらしい。

型変換

やや順番が逆になったが、
整数⇔文字列の変換は次のようにする。


a = "1"
b = 2
print a + str(2) # 12
print int(a) + b # 3

Pythonでは、デフォルトで違う型同士の加算はできないので、このような型変換が必要になる。その分、文字列の結合もPerlのような不自然な演算子ではなく「+」が使える。