Python 名称错误:名称';队列id';没有定义

Python 名称错误:名称';队列id';没有定义,python,class,oop,object,arguments,Python,Class,Oop,Object,Arguments,我希望能够创建一个类的实例,并在此实例上调用将我连接到服务(SQS,如果这很重要的话)的方法。然后我希望能够调用方法,让我与该服务交互 出于某种原因,我在导入时不断遇到以下错误: class AmazonQueue(queue_id): NameError: name 'queue_id' is not defined 但据我所知,这甚至在导入时都没有被调用,所以我不应该得到这个错误 AmazonQueue中有以下方法: def __new__(self, queue_id):

我希望能够创建一个类的实例,并在此实例上调用将我连接到服务(SQS,如果这很重要的话)的方法。然后我希望能够调用方法,让我与该服务交互

出于某种原因,我在导入时不断遇到以下错误:

    class AmazonQueue(queue_id):
NameError: name 'queue_id' is not defined
但据我所知,这甚至在导入时都没有被调用,所以我不应该得到这个错误

AmazonQueue中有以下方法:

def __new__(self, queue_id):
        conn = am_auth.BasicAuth()
        q = conn.create_queue(queue_id)
        return q
它只向服务返回一个表示身份验证的对象,我认为理论上其他方法可以运行该对象

在我的脚本中,我希望这样运行:

q = am_queue.AmazonQueue(queue_id='queue_id_goes_here')
然后在AmazonQueue()内部调用一个方法,如下所示:


那么,如果导入时没有实例化类,为什么会出现此错误?

在类定义中,
AmazonQueue
的参数是父类,而不是实例化所需的参数

一种选择是只创建一个函数,因为您的示例使用非常简单

def get_queue(queue_id):
  conn = am_auth.BasicAuth()
  q = conn.create_queue(queue_id)
  return q
有一点需要考虑的是:

一般来说,除非您 子类化不可变类型,如str、int、unicode或tuple


从堆栈溢出的答案来看

,基本上这完全是因为我对Python中的OOP不熟悉。类定义在导入时调用,因为定义类是一个可执行语句。
def get_queue(queue_id):
  conn = am_auth.BasicAuth()
  q = conn.create_queue(queue_id)
  return q