Python类奇怪的行为

2024-10-01 19:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个类,它应该创建一个对象,描述使用paramiko连接到远程Linux服务器的情况。你知道吗

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

在这个类中,我有两个函数。其中一个返回文件列表:

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)

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

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

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


Tags: 文件函数selfsend列表get远程remote
2条回答

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

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

我终于明白了:

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

相关问题 更多 >

    热门问题