如何在类成员上使用修饰符?

问题描述 投票:0回答:1

我正在尝试编写Flask服务器类,但在decorator方法上遇到错误。

class Server:
    def __init__(self, port):
        self.server = flask.Flask(__name__)
        self.port = port


    @self.server.route("/isRunning/<int:index>/")
    def isRunning(self, index):
        while (not self.running):
            time.sleep(0.5)

        return "Ok"


    def run(self):
        self.server.run(host="localhost", port=self.port)


a = Server(5000)
a.run()
  File "Server.py", line 20, in Server 
     @self.server.route("/login/<string:name>/<int:r>/<int:g>/<int:b>/")
NameError: name 'self' is not defined

我据此猜测装饰器无法访问该实例。正确的方法是什么?

python class flask python-decorators
1个回答
0
投票

不要使用route作为修饰符,而应作为一个简单的函数来调用。

class Server:
    def __init__(self, port):
        self.server = flask.Flask(__name__)
        self.port = port
        self.server.route("/isRunning/<int:index>/")(self.isRunning)

    def isRunning(self, index):
        while (not self.running):
            time.sleep(0.5)
        return "OK"

    def run(self):
        self.server.run(host="localhost", port=self.port)

a = Server(5000)
a.run()

(也请注意,在Server.run中,对app的引用应该是对self.server的引用。)

© www.soinside.com 2019 - 2024. All rights reserved.