將對象添加到列表時出現問題。當我將對象追加到列表的末尾,然後嘗試遍歷它時,列表中的每個地方都會讓我回到最近添加的對象。Python將唯一類對象添加到列表中
該腳本比較來自Excel電子表格中不同項目的信息。我使用Python for Windows和win32com.client來訪問我感興趣的speadsheet。我在Stack Overflow上讀到了一些其他人遇到的問題,這些問題在列表中添加了獨特的對象,但我很確定我沒有具有與他們所做的相同的錯誤(在循環中初始化列表,而不是在創建類對象時提供輸入屬性)。
我可以註釋掉循環中的對象創建,並簡單地將數字添加到列表中,並且能夠打印出所有三個唯一值,但只要我將對象創建回調放入,就會出錯。下面的代碼只打印三個最近添加的項目。任何幫助將不勝感激,謝謝!
class Project:
"""
Creates an instance for each project
in the spreadsheet
"""
def __init__(self, bldg, zone, p_num, p_name, p_mgr,
const_mgr, ehs_lias, ehs_const, status,
p_type, start, finish):
self.bldg = bldg
self.zone = zone
self.p_num = p_num
self.p_name = p_name
self.p_mgr = p_mgr
self.const_mgr = const_mgr
self.ehs_lias = ehs_lias
self.ehs_const = ehs_const
self.status = status
self.p_type = p_type
self.start = start
self.finish = finish
def quickPrint(self):
""" prints quick glance projects details """
if p_name is None:
pass
else:
print 'Building ' + str(bldg.Value)
print str(p_name.Value)
print str(p_type.Value) + " -- " + str(p_mgr.Value)
print str(start.Value) + " - " + str(finish.Value)
projects = []
for i in range(25, 28):
bldg = excel.Cells(i,1)
zone = excel.Cells(i,2)
p_num = excel.Cells(i,3)
p_name = excel.Cells(i,4)
p_mgr = excel.Cells(i,5)
const_mgr = excel.Cells(i,6)
ehs_lias = excel.Cells(i,7)
ehs_const = excel.Cells(i,8)
status = excel.Cells(i,9)
p_type = excel.Cells(i,10)
start = excel.Cells(i,11)
finish = excel.Cells(i,12)
projects.append(Project(bldg, zone, p_num, p_name, p_mgr,
const_mgr, ehs_lias, ehs_const,
status, p_type, start, finish))
projects[0].quickPrint()
projects[1].quickPrint()
projects[2].quickPrint()
什麼是'quickPrint'? – 2014-10-31 15:27:06
Project類中的一個函數,用於只打印項目開始/結束日期和名稱。我把它放在了上面,因爲它似乎在工作,只是印出了很多相同的東西! – jcusick 2014-10-31 15:30:49
那麼,這是我的觀點:你怎麼知道這個問題不在印刷中,而不是對象的創造? – 2014-10-31 15:32:28