python中的“指向成员”

时间:2016-03-29 12:17:53

标签: python member

有关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的一个实例。

这些电话非常相似。所以,我想删除复制粘贴,并得到类似下面的内容(这只是想法,我不是“本机pythonian”)

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')

如何编写函数super_do

1 个答案:

答案 0 :(得分:2)

你可以这样做:

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

然后您可以像这样使用它:

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