2010-09-05 29 views

Répondre

0
class logger: 
    print('Hi') 

imprime Hi. Les instructions sous une définition de classe sont exécutées au moment de la définition.

Une définition de fonction comme celle-ci:

def GET(self): 
    # loggedout() 
    session = web.ctx.session #this line 
    form = self.createform() 
    return render.create(form) 

est aussi une déclaration. Il crée l'objet fonction nommé GET. Mais le code à l'intérieur de la fonction n'est pas exécuté tant que la méthode GET n'est pas appelée.

C'est pourquoi vous obtenez un message d'erreur dans le premier cas, mais pas dans le second.

1

web.ctx ne peut pas être utilisé dans ce cadre. C'est un objet thread-local que web.py initialise avant qu'il n'appelle GET/POST/etc. et est défaussé par la suite.