R0201:POST方法可能是一个函数(不能自用)

时间:2018-08-09 18:17:03

标签: python flask-restplus

@api.route('/my-resource/<id>', endpoint='my-resource')
@api.doc(params={'id': 'An ID'})
class MyResource(Resource):

    @api.doc(responses={403: 'Not Authorized'})
    def post(self, id):
        api.abort(403)

如何避免这种pylint错误?任何人都可以有任何想法吗?

我尝试编写类似以下的构造函数:

    @api.route('/my-resource/<id>', endpoint='my-resource')
    @api.doc(params={'id': 'An ID'})
    class MyResource(Resource):
          def __init__(self):
              self.counter = 0

          @api.doc(responses={403: 'Not Authorized'})
           def post(self, id):
               api.abort(403)

但这不起作用。调用API时会引发内部服务器错误。 错误:

    lib/python3.7/site-packages/flask/app.py", line 1813, in     full_dispatch_request
    rv = self.dispatch_request()

    lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)

    lib/python3.7/site-packages/flask_restplus/api.py", line 319, in wrapper
    resp = resource(*args, **kwargs)

    /lib/python3.7/site-packages/flask/views.py", line 87, in view
    self = view.view_class(*class_args, **class_kwargs)
    TypeError: __init__() takes 1 positional argument but 2 were given

1 个答案:

答案 0 :(得分:0)

https://github.com/noirbizarre/flask-restplus/blob/9032694743ce050be9a5337b62095621cf08c107/flask_restplus/api.py#L190

可能还需要一个参数

简单修复

class MyResource(Resource):
      def __init__(self):
          self.counter = 0

      @api.doc(responses={403: 'Not Authorized'})
       def post(self, id):
           api.abort(403)

class MyResource(Resource):
      def __init__(self, _):
          self.counter = 0

      @api.doc(responses={403: 'Not Authorized'})
       def post(self, id):
           api.abort(403)

class MyResource(Resource):

      @api.doc(responses={403: 'Not Authorized'})
       def post(self, id):
           api.abort(403)