
12
章 高度なイテレーション
you are here
483
メソッド呼び出しをつなげるときには注意する
(前述の例の
strip
と
split
のように)
Python
のメソッド呼び出しをつなぐことを嫌う人も
います。このようなチェーンは、一見読みにくいからです。しかし、メソッドチェーンはよく使わ
れているので、遭遇することも多いでしょう。しかし、メソッド呼び出しの順序は交換できないの
で注意が必要です。
次のコードは問題が起こる例です(この例は前ページのコードによく似ています)。前は
strip
、
split
という順序でしたが、今回はまず
split
を呼び出してから
strip
を呼び出して
います。詳しく説明しましょう。
AttributeError
を
起こしてクラッシュ
します。
このメソッド
チェーンの順序が
前とは逆です。
ここでは何が起こっているのでしょうか?
まず、メソッドチェーンの実行時における代入演算
子の右辺のデータ型を考えてください。
実行前の
line
は文字列です。文字列に対して
split
を呼び出すと、
split
に指定した引数
を区切り文字として使って文字列のリストを返します。最初は文字列(
line
)だったものが動的
にリストに変わり、そのリストに対して別のメソッドを呼び出します。この例では、次のメソッ
ドは
strip
です。
strip
はリストではなく文字列に対して呼び出すものなので、リストにはメ
ソッド
strip
がないため
AttributeError
となります。
前ページのメソッドチェーンにはこの問題はありません。 ...