Python.use(better)
■ 事例:モジュールを起動する
□ 全項目を確認する
関数 do を利用すると、全ステップの「項目」を確認できます。
$ python -i vector.py >>> do() ... 1: step01 -- def __init__(self, *args):
□ 各項目を実行する
関数 do に引数を指定すると、各ステップの「動作」を確認できます。
>>> do(1) >>> # -------------------------------------------------- step01 >>> v = Vector(); v () >>> v1 = Vector(3,4); v1 (3, 4) >>>
《余録》テストケース
def ex_vector1(local): #@:
ex_vector0(local)
source = '''
v1 = Vector(3,4); v1
'''.split("\n")
do_it(source, local)
既存のテストケース(ここでは ex_vector0)を再利用するとともに、その差分情報だけを追記します。
■ 事例:コードの解説
class Vector(object):
def __init__(self, *args):
self.elements = list(args)
def __repr__(self):
return "(%s)"%", ".join(map(str, self.elements))
## ----------------------------------------
local = locals()
ex_vector1(local)
□ 特殊メソッド __init__
def __init__(self, *args):
self.elements = list(args)
メソッド __init__ では、クラス呼び出し Vector() に呼応して、生成したインスタンスを初期設定します。ここでは、引数に指定した各要素が、ベクトルの成分となります。
- インスタンス属性 elements は、ベクトルの各要素(成分)を列挙したリスト list を束縛します。
- 組み込み関数 list は、シーケンス args を構成する各要素(引数)を列挙したリストを生成します。
《Note》組み込み関数 list
インスタンス属性 elements が、list で規定したプロトコルに準拠することを保証します。
□ 特殊メソッド __repr__
def __repr__(self):
return "(%s)"%", ".join(map(str, self.elements))
メソッド __repr__ では、組み込み関数 repr に呼応して、オブジェクトに固有の文字列表現を規定します。ここでは、ベクトルの成分を列挙した文字列を生成します。
- 組み込み関数 str は、文字列を生成します。
- 組み込み関数 map は、関数 str を self.elements の各要素に適用して、各要素の文字列表現を列挙します。
- メソッド join は、各要素(文字列)を連結した文字列を生成します。
《Note》組み込み関数 str
メソッド join で連結する対象が文字列であることを保証します。
》こちらに移動中です《
↑TOP