Python类奇怪的行为

时间:2017-04-05 13:54:49

标签: python class aggregate

有一个类,它应该使用paramiko创建一个描述与远程Linux服务器连接的对象。

class Oracle:
  def __init__(self):
  ...
  self.outfile = outfile

在这堂课中我有2个功能。一个返回文件列表:

def oratab(self):
  self.remote.send("cat /etc/oratab\n")
  ...
  return oralst
> [u'one', u'oneone', u'oneoneone']

另一个使用oratab func:

中的文件列表从远程服务器返回信息
def get_arcs(self, n):
        yield basestatus, sum(lst)
self.remote.send("exit\n")
time.sleep(1)

如果我手动将值传递给get_arcs,则可以正常工作 如果我手动调用oratab,它就可以了 如果我将这两个函数聚合在一起:

for i, y in zip(instance.get_arcs(), instance.oratab()):
    print i, y

它返回相同的结果两次,即使它应该修剪到最小的一个(两个列表都是3个元素大) 因此,如果我调用任何没有其他函数调用的那些它看起来不错,但如果它们在同一个脚本中执行,则结果是意外的(即使没有zip())

2 个答案:

答案 0 :(得分:1)

get_arcs()是一个生成器,oratab()不是。尝试使用

zip(list(instance.get_arcs()), instance.oratab())

答案 1 :(得分:1)

最后我明白了:

for i, b in zip((0, 1, 2), instance.oratab()):
    print list(instance.get_arcs(i)), b
相关问题