在我的FIFO演算法模擬中,我目前正在嘗試為七個模擬任務中的每一個創建一個物件,稍后將用于在 Excel 中以圖形方式顯示一些時間引數。所以我在一個for回圈中創建所有物件,在另一個回圈中,我用這些物件中的每一個執行相應的函式,以便在另一個類中傳輸到 Excel。
但在第二個for回圈中,我總是收到錯誤訊息
File "G:\Schedulibg\PyScheduler\pyFIFOAlgorithm.py", line 48, in sched_StartScheduler
self.worksheet1.write('A' str((self.tasksAdded * 4) 1), 'Turn Around Time:')
AttributeError: 'pyFIFOAlgorithm' object has no attribute 'worksheet1' "
我不知道為什么它在pyFIFOAlgorithm中尋找worksheet1,雖然物件來自pyToExcel,對應的方法來自于類。我已經更改了 的名稱taskTest,因為我讀到這也可能是一個問題。在它被稱為 tsk 之前。
import pyScheduler
from pyToExcel import pyToExcel
def alg_SortArrivedTasks(arrivedTasks):
sortedTasks = []
for taskx in arrivedTasks:
sortedTasks.append(taskx)
sortedTasks.sort(key=lambda x: x.tskArrival)
return sortedTasks
class pyFIFOAlgorithm(pyScheduler.pyScheduler):
def __init__(self, taskSet, sched_Alg, idleTime):
self.alg_Identifier = 2
self.alg_Name = 'FIFO'
self.completionTime = 0
self.turnAroundTime = 0
self.totalWaitingTime = 0
self.totalTurnAroundTime = 0
self.tasksAdded = 0
super(pyFIFOAlgorithm, self).__init__(taskSet, sched_Alg, idleTime)
def sched_StartScheduler(self, taskSet):
self.sched_SchedulingPoints.insert(0, self.sched_Clock)
taskList = []
taskNumber = 1
for task in alg_SortArrivedTasks(taskSet):
print("\nArrival time of ", task.tskName, ": ", task.tskArrival)
self.sched_ExecuteAvailableTasks(task)
self.completionTime = task.completiontime
self.turnAroundTime = ((self.completionTime) - task.tskArrival)
#taskList.append(pyToExcel(taskNumber, self.completionTime, self.turnAroundTime))
self.totalTurnAroundTime = self.turnAroundTime
print("Turn Around Time: ""{:.2f}".format(self.turnAroundTime))
print("Completion Time: ""{:.2f}".format(self.completionTime))
taskList.append(pyToExcel(task.tskName, self.completionTime, self.turnAroundTime))
for taskTest in taskList:
pyToExcel.inputData(pyToExcel, taskNumber, taskTest.turn, taskTest.completion) #Line with Error
taskNumber = 1
print("\nAll tasks executed at: ", "{:.2f}".format(self.sched_Clock))
print("Average Waiting Time: ", "{:.2f}".format((self.totalWaitingTime /len(taskSet))))
print("Average Turn Around Time: ", "{:.2f}".format((self.totalTurnAroundTime / len(taskSet))))
self.worksheet1.write('A' str((self.tasksAdded * 4) 1), 'Turn Around Time:')
self.worksheet1.write('B' str((self.tasksAdded * 4) 1), self.totalTurnAroundTime / len(taskSet))
self.workbook.close()
import xlsxwriter
class pyToExcel:
def __init__(self, task, completion, turn):
self.task = task
self.completion = completion
self.turn = turn
workbook = xlsxwriter.Workbook('AlgorithmData.xlsx')
worksheet1 = workbook.add_worksheet('FIFO')
worksheet2 = workbook.add_worksheet('Graphics')
cell_format = workbook.add_format(
{
"border": 1,
"border_color": "#000000"
}
)
cell_format.set_font_color('green')
cell_format.set_bold()
cell_format.set_align('center')
cell_format.set_align('vcenter')
worksheet1.set_column(0, 0, 17)
worksheet1.set_column(1, 1, 12)
worksheet2.write('A' str(1), 'Task', cell_format)
worksheet2.write('B' str(1), 'Completion Time', cell_format)
worksheet2.write('C' str(1), 'Turn Around Time', cell_format)
worksheet2.write('D' str(1), 'Waiting Time', cell_format)
worksheet2.set_column(0, 0, 4)
worksheet2.set_column(1, 1, 15)
worksheet2.set_column(2, 2, 17)
worksheet2.set_column(3, 3, 12)
def inputData(self, task, turnaround, completion):
pyToExcel.worksheet1.write('A' str((task * 4) 1), 'Turn Around Time:')
pyToExcel.worksheet1.write('B' str((task * 4) 1), turnaround)
pyToExcel.worksheet1.write('A' str((task * 4) 2), 'Completion Time:')
pyToExcel.worksheet1.write('B' str((task * 4) 2), completion)
pyToExcel.worksheet2.write('A' str((task 1)), task)
pyToExcel.worksheet2.write('B' str((task 1)), completion)
pyToExcel.worksheet2.write('C' str((task 1)), turnaround)
pyToExcel.worksheet2.write('D' str((task 1)), 'waiting time')
uj5u.com熱心網友回復:
它正在查找worksheet1屬性,因為您告訴它:
self.worksheet1.write('A' str((self.tasksAdded * 4) 1), 'Turn Around Time:')
^^^^^^^^^^
根據您參考的文本,該行也在錯誤訊息中參考,是程式的第48行。您標記為錯誤位置的行是第38行,但回溯肯定是第48行。
該方法是 的類定義的一部分pyFIFOAlgorithm,因此self幾乎可以肯定是一個pyFIFOAlgorithm物件。也許self是一個錯字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407414.html
標籤:
下一篇:求兩個陣列之和
