"Pointer to member" 在 python
"Pointer to member" in python
关于 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
是 class Info
的实例。
这些调用非常相似。所以,我想删除复制粘贴并得到如下内容(这只是想法,我不是 "native 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
?
你可以这样做:
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")
关于 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
是 class Info
的实例。
这些调用非常相似。所以,我想删除复制粘贴并得到如下内容(这只是想法,我不是 "native 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
?
你可以这样做:
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")