Python AttributeError: class has no attribute
Python AttributeError: class has no attribute
我有一个 class 队列的代码,它由 simpy
Resource
和 Container
(buffer
):
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))
但是当我想使用 class 并且它的属性缓冲区使用
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'
介意解释一下为什么我不能使用 class 中的属性吗?
谢谢。
如果queue
是你的class,它的实例属性是buffer
,那么你可以通过instances[=访问buffer
您的 class 的 19=],而不是 class 本身。
例如
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
我有一个 class 队列的代码,它由 simpy
Resource
和 Container
(buffer
):
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))
但是当我想使用 class 并且它的属性缓冲区使用
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'
介意解释一下为什么我不能使用 class 中的属性吗? 谢谢。
如果queue
是你的class,它的实例属性是buffer
,那么你可以通过instances[=访问buffer
您的 class 的 19=],而不是 class 本身。
例如
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