Python.use(better) #特殊メソッド __len__
‖記事一覧‖ Python.use(better)《Python3.1》
特殊メソッド __len__
《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28
特殊メソッド __len__
>>> help(str.__len__) ... __len__(...) x.__len__() <==> len(x)
メソッド __len__ は、組み込み関数 len に呼応して、オブジェクトを構成する要素数を規定します。
■ 全項目を確認する
全ステップの「項目」を確認するには、関数 do を利用します。
$ python -i special_method.py >>> do() @: tips_len -- len(...) ... >>>
■ 各項目を実行する
各ステップの「動作」を確認するには、関数 do に実引数を指定します。
>>> do(@) >>> # -------------------------------------------------- tips_len >>> s = Tips(); len(s) #1: TypeError: object of type 'Tips' has no len() >>> s = Tips(); len(s) #2: 0 >>> s = Tips(); len(s) #3: ValueError: __len__() should return >= 0
事例:コードの解説
class Tips(object): pass
メソッド __len__ を定義しないと、次のように
>>> s = Tips(); len(s) #1: TypeError: object of type 'Tips' has no len()
例外 TypeError を生成して、エラーメッセージが出力されます。
■ メソッド __len__ を定義する
class Tips(object):
def __len__(self):
return 0
メソッド __len__ を定義すると、次のように
>>> s = Tips(); len(s) #2:
0
リターン値として整数 0 が出力されます。
■ メソッドのリターン値
class Tips(object):
def __len__(self):
return -1
リターン値として負数を指定すると、次のように
>>> s = Tips(); len(s) #3: ValueError: __len__() should return >= 0
例外 ValueError を生成して、エラーメッセージが出力されます。
- リターン値には、0 以上の値を指定する必要があります。
》こちらに移動中です《
↑TOP