2010-10-22 4 views
9

Chaque fois que l'entrée s provient du formulaire; le list est initialisé à nouveau. Comment puis-je modifier le code pour ajouter chaque nouveau s à la liste?Comment initialiser la liste vide?

Merci.

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

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

Pour modifier le comportement, vous devez modifier l'ordre de vos instructions. Pourquoi n'essayez-vous pas quelques ordres différents des déclarations pour voir comment le comportement change? –

+7

Évitez les noms qui font office d'ombre ("liste"). –

+0

@ S.Lott: Devinez et vérifiez n'est pas un moyen très efficace pour en apprendre davantage sur une langue. Il a sa place, mais je suis respectueusement en désaccord dans cette circonstance. – JoshD

Répondre

5

Je ne suis pas sûr de ce que le contexte de votre code est, mais cela devrait fonctionner:

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) 

Cela fait list une variable d'instance de sorte qu'il va rester. Le problème est que list peut ne pas exister la première fois que nous essayons de l'utiliser, dans ce cas, nous devons l'initialiser.

En fait, en regardant this post, cela pourrait être un code plus propre:

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) 

[Edit:] ci-dessus ne fonctionne pas pour une raison quelconque, alors essayez ceci:

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

Merci, j'ai essayé ce http://codepad.org/bdCaLiUs mais il encore réécrit la liste au lieu de l'ajouter – Zeynel

+0

@Zeynel vous ne suivez pas les instructions –

+0

@Zeynel Le code que vous créez ne ressemble en rien à mon correctif.Faites copier et coller mon correctif dans votre code – dln385

5

Vous pourrait faire de la liste une variable membre de l'objet et ensuite seulement la mettre à jour quand get() est appelée:

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 Je pense que créer 'self.list' dans' __init__' rend les choses plus explicites –

+0

+1 C'est ce que je voulais faire, mais j'ai abandonné quand je n'ai pas trouvé l'original '__init __()' pour ' webapp.RequestHandler'. J'ai oublié le truc '* p, ** kw'. – dln385

+0

Attendez, que se passe-t-il si '__init__' appelle' get'? (Encore une fois, je ne suis pas sûr de ce que 'webapp.RequestHandler' fait réellement). Je pense que vous devriez 'self.list = []' avant l'appel à '__init__'. – dln385

Questions connexes