Python AttributeError:类没有属性

时间:2018-04-04 07:59:33

标签: python class attributeerror simpy

我的代码包含一个由simpy ResourceContainerbuffer)组成的类队列:

class queue:
    def __init__(self, env):
        self.port = simpy.Resource(env, capacity=1)
        self.buffer = simpy.Container(env, init = 0, capacity=1250000000)
        self.mon_proc = env.process(self.monitor_tank(env))

但是当我想使用类和它的属性缓冲区时使用

def Packet(env, id, size, port, time_in_port):

    arrive = env.now
    yield queue.buffer.put(size)
    print('packet%s %s arriving at %lf' % (id, size, arrive))

    with port.request() as req:
        yield req

        tip = random.expovariate(1/time_in_port)
        yield env.timeout(tip)
        amount = size
        yield queue.buffer.get(amount)
        print('packet%s %s depart at %lf' % (id, size, env.now))

调用queue.buffer

时出现以下错误
AttributeError: class queue has no attribute 'buffer'

介意解释为什么我不能使用该类的属性? 感谢。

1 个答案:

答案 0 :(得分:2)

如果queue是您的类,并且其实例属性为buffer,那么您可以通过您班级的实例访问buffer,而不是上课本身。

E.g。

class Queue:
    def __init__(self, env):
        self.port = simpy.Resource(env, capacity=1)
        self.buffer = simpy.Container(env, init = 0, capacity=1250000000)
        self.mon_proc = env.process(self.monitor_tank(env))

def Packet(env, id, size, port, time_in_port):
    queue = Queue(env) # instantiate your class
    ...
    # Make use of queue.buffer