2010-10-22 10 views
9

Cada vez que la entrada s proviene del formulario; el list se inicializa de nuevo. ¿Cómo cambio el código para anexar cada nuevo s a la lista?¿Cómo inicializar la lista vacía?

Gracias.

class Test(webapp.RequestHandler): 
    def get(self): 

     s = self.request.get('sentence') 
     list = []         
     list.append(s)      
     htmlcode1 = HTML.table(list)   
+0

Para cambiar el comportamiento, debe cambiar el orden de sus estados de cuenta. ¿Por qué no intentan algunas ordenaciones diferentes de las declaraciones para ver cómo cambia el comportamiento? –

+7

Evite los nombres que sombrean las incorporaciones ("lista"). –

+0

@ S.Lott: Adivinar y verificar no es una forma muy efectiva de aprender sobre un idioma. Tiene su lugar, pero discrepo respetuosamente en esta circunstancia. – JoshD

Respuesta

5

no estoy seguro de lo que el contexto de su código es, pero esto debería funcionar:

class Test(webapp.RequestHandler): 
    def get(self): 
     s = self.request.get('sentence') 
     try: 
      self.myList.append(s) 
     except NameError: 
      self.myList= [s] 
     htmlcode1 = HTML.table(self.myList) 

Esto hace list una variable de instancia lo que va a quedarse. El problema es que list podría no existir la primera vez que intentamos usarlo, por lo que en este caso necesitamos inicializarlo.

En realidad, mirando a this post, esto podría ser un código más limpio:

class Test(webapp.RequestHandler): 
    def get(self): 
     s = self.request.get('sentence') 
     if not hasattr(self, 'myList'): 
      self.myList = [] 
     self.myList.append(s) 
     htmlcode1 = HTML.table(self.myList) 

[Editar:] Lo anterior no funciona por alguna razón, así que trata de esto:

class Test(webapp.RequestHandler): 
    myList = [] 
    def get(self): 
     s = self.request.get('sentence') 
     self.myList.append(s) 
     htmlcode1 = HTML.table(self.myList) 
+0

Gracias. he intentado esto http://codepad.org/bdCaLiUs pero todavía vuelve a escribir la lista en lugar de añadir. – Zeynel

+0

@Zeynel usted no está siguiendo las instrucciones –

+0

@Zeynel el código se enlaza a parece en nada mi dosis. intente copiar y pegar mi dosis en el código. – dln385

5

Usted podría hacer que la lista sea una variable miembro del objeto y luego solo actualizarla cuando se llame a get():

class Test(webapp.RequestHandler): 
    def __init__(self, *p, **kw): # or whatever parameters this takes 
     webapp.RequestHandler.__init__(self, *p, **kw) 
     self.list = [] 

    def get(self): 
     s = self.request.get('sentence') 
     self.list.append(s)      
     htmlcode1 = HTML.table(self.list)   
+0

+1 Creo que crear 'self.list' en' __init__' hace que las cosas sean más explícitas –

+0

+1 Esto es lo que quería hacer, pero me rendí cuando no pude encontrar el '__init__()' original para ' webapp.RequestHandler'. Me olvidé del truco '* p, ** kw'. – dln385

+0

Espera, ¿y si '__init__' hace una llamada a' obtener'? (De nuevo, no estoy seguro de qué hace 'webapp.RequestHandler' en realidad). Creo que deberías 'self.list = []' antes de la llamada a '__init__'. – dln385

Cuestiones relacionadas