请问为什么说我没有定义

class Queue:
def init(self):
self.items=[]
def isEmpty(self):
return self.items ==[]
def enqueue(self,item):
self.items.insert(0,item)#0是指对象object插入索引的位置
def dequeue(self,):
return self.items.pop()
def size(self):
return len(self.items)

import random
class Printer:#打印机属性
def init(self,ppm):
self.pagerate=ppm#打印速度
self.currentTask=None#打印任务
self.timeRemaining=0#打印倒计时
def tick(self):#打印一秒
if self.timeRemaining!=0:
self.timeRemaining=self.timeRemaining-1
if self.timeRemaining<=0:
self.currentTask=None
def busy(self):
if self.currentTask!=None:
return True
else:
return False
def startNext(self,newtask):
self.currentTask=newtask
self.timeRemaining=newtask.getPages()

class Task:
def init(self,time):
self.timestamp=time#生成时间戳,time为现在的时间戳
self.pages=random.randrange(1,21)
def getStamp(self):#
return self.timestamp
def getPages(self):
return self.pages
def waitTime(self,currenttime):#等待时间
return currenttime-self.timestamp
def newPrintTask(self):
num=random.randrange(1,181)#构造概率
if num == 180:
return True
else:
return False
def simulation(numSeconds,pagesPerMinute):#模拟的时长,打字速度
labprinter=Printer(pagesPerMinute)#模拟一个新的打字机
printQueue=Queue
waitingtimes=[]

    for currentSecond in range(numSeconds):
        if newPrintTask():
            task=Task(currentSecond)
            printQueue.enqueue(task)#增加队列
        if (not labprinter.busy())and(not printQueue.isEmpty()):#机器空闲,队列存在任务
            nexttask=printQueue.dequeue()
            waitingtimes.append(nexttask.waitTime(currenttime))
            labprinter.startNext(nexttask)
        labprinter.tick()
    averageWait=sum(waitingtimes)/len(waitingtimes)
    print("Aberage Wait %6.2f secs %3d tasks remaining."%(averageWait,printQueue.size()))

for i in range(20):
simulation(3600,5)

    D:\python\python.exe D:/python/painting.py

Traceback (most recent call last):
File "D:/python/painting.py", line 66, in
simulation(3600,5)
NameError: name 'simulation' is not defined

simulation在哪里定义的,是全局函数还是Task的成员函数,没有缩进无法判断
你自己检查下。按理说应该作为全局函数才行