簡體   English   中英

Python類奇怪的行為

[英]Python class strange behaviour

有一個類應該創建一個對象,該對象描述使用paramiko到遠程Linux Server的連接。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM