用类创建类:Python

2024-09-28 17:16:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python实现消费者-生产者问题。。。我的一个问题是,我是否可以在类中创建一个类,并在外部范围中创建它的对象,如下面的代码所示。。。你知道吗

class Main(threading.Thread):
    def __init__(self):
        processNumber = 0
        queue_size=5
        self.mutexProducer=thread.allocate_lock()#mutex variablaes
        self.mutexConsumer=thread.allocate_lock()
        self.mutexTeller=thread.allocate_lock()
        self.queue=Queue.Queue(maxsize=queue_size)
        self.producer=Producer(processNumber,random.random())

class Producer(threading.Thread):
    def __int__(self,ProducerID,serviceTime):
        self.id=ProcucerID
        self.serviceTime=serviceTime
    def run(self):
            #mutexProducer.acquire()
            #Entering Critical section
        print queue.qsize()
        if queue.full():
            sleep(random.random())
        else:
            print "Customer %d Enters the Queue" %(self.id)



app=Main()

我得到以下错误

Traceback (most recent call last): File "/Users/sohil/Desktop/sync.py", line 55, in app=Main() File "/Users/sohil/Desktop/sync.py", line 36, in init self.producer=Producer(processNumber,random.random()) NameError: global name 'Producer' is not defined


Tags: producerselflocktimequeuemaindefservice
1条回答
网友
1楼 · 发布于 2024-09-28 17:16:03

改变顺序。你知道吗

class Producer(threading.Thread):
    def __int__(self,ProducerID,serviceTime):
        self.id=ProcucerID
        self.serviceTime=serviceTime
    def run(self):
            #mutexProducer.acquire()
            #Entering Critical section
        print queue.qsize()
        if queue.full():
            sleep(random.random())
        else:
            print "Customer %d Enters the Queue" %(self.id)

class Main(threading.Thread):
    def __init__(self):
        processNumber = 0
        queue_size=5
        self.mutexProducer=thread.allocate_lock()#mutex variablaes
        self.mutexConsumer=thread.allocate_lock()
        self.mutexTeller=thread.allocate_lock()
        self.queue=Queue.Queue(maxsize=queue_size)
        self.producer=Producer(processNumber,random.random())

Python是一种从上到下执行的解释语言,因此任何依赖项都必须在顶部声明。你知道吗

相关问题 更多 >