さて、 リスト内包のひみつ - atsuoishimoto's diary で、Python3では、リスト内包式は関数呼び出しとなることを説明した。 >>> a = [i*2 for i in range(3)] というスクリプトは、次のように展開される。 >>> def _listcomp(_it): ... ret = [] ... for i in it: ... ret.append(i*2) ... return ret ... >>> _it = range(3) >>> a = _listcomp(it) 通常、この点はあまり気にする必要はないが、問題となるケースもなくはない。 クラスブロックのリスト内包 クラスブロックで次の処理を実行してみよう。 class Foo: NUMS = [i*2 for i in range(3)] まあ、これは当然動作する。Foo.NUMS