機械です。
> 文字列でリストを join するのは美しくないという話がありました。
> ということで、join を逆にリストのメソッドに、
> といっても直接はできないので
> サブクラスを定義してメソッドを付け加えます。
> # タイプからサブクラスを作れるのは 2.2 以降かな
> # じつは初めてやってみた。
あ、これいいな・・・
Pythonは、組み込みタイプからサブクラスが作れないので、毎回
ラッパークラスを作ってメソッドを実装してたので、それから考え
ると結構便利そう・・・
> >>> ListWithJoin([str(i) for i in range(8)]).join(",")
> '0,1,2,3,4,5,6,7'
>
> てな感じになります。使ってみる気になります?
このほうが私はきれいだと思います。
美しい・・とかいうとなんかセンスだけの問題のように聞こえます
が、実際は「感覚的に使えるか」ひいては「覚えて使いやすいか」と
いうようなところにつながると思いますので、こういうところはきち
んと見ていって損は無いと思います。
オブジェクト指向主義の最大の目的は理解しやすさと扱いやすさだと、
私は思っていますので。
> それから上でも使っていますが、
> [str(i) for i in range(8)] といった表現、
> これが案外解り難いようですが、
> 集合の定義みたいに思えば覚え易いのではないでしょうか。つまり、
> { str(i) | i ∈ range(8) } の
> | を for 、∈ を in と読めば、そのままです。
> # 集合の定義の方が馴染みが薄いって
集合の(\xAD詎箸?萁箸?ΑΑ\xA6)って、私達の時代は中学数学で習った
んですが、今はどうでしょうね?
[A for B in C if D]
「Dの条件に合致するCの要素のB全てをAの要素とする・・・」
日本語で書いてもやっぱ難しいなぁ・・・
「C中のBで、Dに合うものをみんな、Aにする」
・・・わけわかめ・・・(汗)
機械伯爵