[英]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.