2016-03-29 9 views
0

python syntaxisについての初心者の質問。私はいくつかの機能が"メンバーへのポインタ" in python

summaryA = do_something(lambda info: (info.a, 1)). \ 
    .do_other() \ 
    .do_anoter() \ 
    .saveAsTextFile('/output/path/a.tsv') 

summaryJ = do_something(lambda info: (info.j, 1)). \ 
    .do_other() \ 
    .do_anoter() \ 
    .saveAsTextFile('/output/path/j.tsv') 

summaryZ = do_something(lambda info: (info.z, 1)). \ 
    .do_other() \ 
    .do_anoter() \ 
    .saveAsTextFile('/output/path/z.tsv') 

infoがクラスInfoのインスタンスで、次のように呼び出しています。

これらの呼び出しはかなり似ています。だから、私はコピー&ペーストを削除し、機能super_doを書くためにどのように

summaryA = super_do(Info.a, '/output/path/a.tsv') 
summaryJ = super_do(Info.j, '/output/path/j.tsv') 
summaryZ = super_do(Info.z, '/output/path/z.tsv') 

(これは単なるアイデアですが、私は「ネイティブpythonian」はないです)、次のようなものを取得したいのでしょうか?

答えて

2

あなたはこれを行うことができます。

summaryA = super_do("a", "/output/path/a.tsv") 

def super_do(attr, path): 
    return do_something(lambda info, attr=attr: (getattr(info, attr), 1)).\ 
     .do_other() \ 
     .do_another() \ 
     .saveAsTextFile(path) 

あなたは、このようにそれを使用することができます

関連する問題