2010-10-22 34 views
9

Her zaman s girişi formdan gelir; list yeniden başlatıldı. Her yeni s'u listeye eklemek için kodu nasıl değiştiririm?Boş liste nasıl başlatılır?

Teşekkür ederiz.

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

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

Davranışı değiştirmek için, ifadelerinizin sırasını değiştirmeniz gerekir. Davranışın nasıl değiştiğini görmek için neden birkaç farklı ifadeyi denemiyorsunuz? –

+7

Gölgeli dahili isimlerden ("liste") kaçının. –

+0

@ S.Lott: Tahmin et ve kontrol et, bir dil hakkında öğrenmenin çok etkili bir yolu değildir. Yeri var, ama ben bu konuda saygıyla katılmıyorum. – JoshD

cevap

5

Kuralların bağlamı ne olduğundan emin değilim, ama bu çalışması gerekir: bu ayrılmamak edeceğiz böylece

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) 

Bu list bir örnek değişkeni yapar. Sorun, onu kullanmaya çalıştığımız ilk seferde list'un bulunamamasıdır, bu durumda bu dosyayı başlatmamız gerekiyor.

Aslında this post bakarak, bu temizleyici kod olabilir:

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) 

[Düzenleme:] Yukarıda nedense çalışan, bu yüzden bu deneyin değildir:

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

teşekkürler. hala bu http://codepad.org/bdCaLiUs bunu ancak çalıştı Eğer talimatları – Zeynel

+0

sen benim düzeltme benzemeyen bir bağlantı. kopyalamayı deneyin ve koduna benim saptamak yapıştırarak. –

+0

@Zeynel kodunu takip etmiyorsunuz @Zeynel ekleme listesini yerine yeniden yazar. – dln385

5

Sen liste nesnesinin bir üye değişkeni yapabilir ve yalnızca get() çağrıldığında yalnızca güncelleştirebilir:

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 '__init__' içinde' self.list 'oluşturmanın işleri daha açık hale getirdiğini düşünüyorum. –

+0

+1 Bu, yapmak istediğim şeydi, ancak orijinali __init __() 'yi bulamadığım zaman pes ettim webapp.RequestHandler'. "* P, ** kw" numarasını unuttum. – dln385

+0

Bekle, '__init__' 'get' için bir çağrı yaparsa ne olur? (Yine, webapp.RequestHandler'ın aslında ne yaptığından emin değilim). Ben __init__' için aramadan önce self.list = [] 'olmalıdır. – dln385

İlgili konular