Python 类中的一个函数的值如何通过 for 循环传递给另一个函数?

2015-05-24 09:36:53 +08:00
 cc7756789
class A(obejct):
    def all_answer(self):
        #somecode
        for s in br2n.split('\n'):
            yield re.sub(re_allmark, '', s)

    def save(self, path, pattern):
        if not path:
            raise 'No path'
        else:
            with open(path, pattern) as f:
                f.write()

大致的效果
a = A()
for each in a.all_answer():
print each #正常返回结果
each.save('/Path/', 'pattern') #保存到文件中

如何让类中all_anser的值传入类中另一个函数呢?

3502 次点击
所在节点    Python
5 条回复
horizon
2015-05-24 09:58:57 +08:00
self啊,你在all_answer中把想要传的值保存到self中,然后在save中使用就行了吧。
oott123
2015-05-24 10:04:33 +08:00
不应该是 a.save(each, path, pattern) 么…
cc7756789
2015-05-24 10:31:06 +08:00
answers = question.all_answer()
question.save(answers, '/home/zhg/Pictures/result.txt', 'w')
但是这种似乎不太人性化啊
期望的效果是
answers.save(....)
dddd
2015-05-24 13:00:51 +08:00
for s in br2n.split('\n'): self.save(...)

OR:

def save(path, mode):
----with open(path, mode) as f:
--------for data in self.all_answer():
------------self.write(data)

OR:

def save(path, mode):
----answers = self.all_answer()
----with open(path, mode) as f:
--------while 1:
------------try:
----------------data = answers.next()
----------------f.write(data)
------------except StopIteration:
----------------break
dddd
2015-05-24 13:15:28 +08:00
我懂你意思了。。。。

class A(obejct):
----def all_answer(self):
--------for s in br2n.split('\n'):
------------yield B(re.sub(re_allmark, '', s))

class B(object):
----def __init__(self, data):
--------self._data = data

----def save(self, path, pattern):
------------with open(path, pattern) as f:
----------------f.write(self._data)

---- def __str__(self):
--------return self._data

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/193304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX