如何摆脱全局名称没有定义错误?

时间:2013-10-07 21:15:10

标签: python web.py

我正在创建一个像这样的简单web.py服务

urls = (
    '/test', 'index'
)

class index:
    def GET(self):
        user_data = web.input()
        return performstuff(user_data.color, user_data.shade)

    def performstuff(color, shade):
        return "color is " + color + " shade is: " + shade

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

当我运行这个并转到:http://:8080 / test?color = red& shade = dark我收到错误global name 'performstuff' is not defined

我该如何解决这个问题?基本上我试图在我的类中创建另一个函数,这样它可以做一些业务逻辑,然后我可以简单地在我的GET方法中返回它的结果。

3 个答案:

答案 0 :(得分:2)

对于python对象,成员函数需要用self引用,即:

def GET(self):
    user_data = web.input()
    return self.performstuff(user_data.color, user_data.shade)

答案 1 :(得分:1)

performstuffclass index的一种方法,因此,您必须在self前加上它。

def GET(self):
    user_data = web.input()
    return self.performstuff(user_data.color, user_data.shade)

答案 2 :(得分:0)

@Anthony

要访问performstuff的{​​{1}}方法,您可以创建类的实例(class doit,或在方法声明上方添加myInstance = doit(); myInstance.performstuff(),然后说@classmethod