我正在尝试使用我自己的类而不是funcons的方法。 但是由于“语法错误”,代码失败了。我做错了什么?
from bottle import route, run, template
class controller():
def test(self):
return ("<h1>Its a main page!</h1>")
def hello(self,name):
return "Hello {0}".format(name)
sc = controller()
@route('/test')
sc.test()
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)
@route('/')
def indexFunc():
return ('<h1>Hello on first App!!</h1>!')
run(host='localhost', port=8080)
答案 0 :(得分:1)
sc.test()
返回一个字符串。你不能装饰一个字符串。所以第一个问题是,你是调用那个方法(因此试图修饰它的结果)而不是装饰方法本身。
第二个问题是@
装饰器语法必须后跟函数定义,即def
关键字。您可以编写一个除了调用sc.test()
之外什么都不做的函数,由llyas调用shown。或者你可以利用这样一个事实:@
只是函数调用的语法糖,只需写:
route('/test')(sc.test)
答案 1 :(得分:0)
您无法修饰函数调用,您可以修饰函数定义。 尝试替换此行:
sc.test()
与此相符:
@route('/test')
def view():
return sc.test()