【发布时间】:2014-11-29 16:15:52
【问题描述】:
我有非常简单的 python 代码来访问 Amazon Simple Queue Service。但我明白了
builtins.TypeError
TypeError: get_queue() missing 1 required positional argument: 'self'
我的代码:
class CloudQueue(object):
conn = boto.sqs.connect_to_region("eu-west-1",
aws_access_key_id="abc",
aws_secret_access_key="abc")
@app.route('/get/<name>')
def get_queue(self, name):
if(name != None):
queue = self.conn.get_queue(str(name)) <--------- HERE
return conn.get_all_queues()
if __name__ == "__main__":
cq = CloudQueue()
app.debug = True
app.run()
【问题讨论】:
-
确实,
self没有定义;您的方法根本没有参数。在任何情况下都不能在类上注册方法,因为在使用装饰器注册方法时,该方法并未绑定到实例。 -
当我将 self 添加到 def get_queue(self,name) 时,我得到 builtins.TypeError TypeError: get_queue() missing 1 required positional argument: 'self'
-
@user2988649:没错,这就是我所说的你不能注册方法。装饰器在创建类对象之前运行 那里然后,因此您只注册函数,而不是绑定到实例的方法。
标签: python python-3.x flask